Интерфейсный континент — это новый развивающийся сектор в мире технологий в последние годы.По мере того, как люди взаимодействуют с веб-сайтами и улучшают их производительность, количество призывателей, которые отправляются на внешний континент, чтобы попрактиковаться в Javascript, похоже на пересечение карася. река.Существует много способов культивирования, и все они разные.Будущее переднего конца паутины еще не определено, но внутренний взгляд уже начался.К счастью, основная секта переднего конца процветает и популярна , особенно React, Vue и Angular — это три столпа. Лидер, сегодняшняя история начинается с React Canyon.
Каждый внешний призыватель React Canyon, согласно пониманию стека технологий React и внешнего интерфейса, является бронзовым, серебряным, золотым, платиновым, алмазным, звездным и королем, а также соответствует семи модулям этой серии руководств.
- Упрямая бронза
- Начальный этап входа в каньон, призыватель по умолчанию уже имеет
ES6
,nodejs
Основы - использовать
create-react-app
УчреждатьReact
среда разработки - Учить
React
Основной геймплей в мире, такой как компонентизация,JSX
, прослушиватель событий, внутреннийstate
, компонентаprops
, функции жизненного цикла и др. - Эта статья в основном знакомит
React
Базовые знания, необходимые для перехода с бронзы на серебро, после прочтения вы станете серебряным.
- Начальный этап входа в каньон, призыватель по умолчанию уже имеет
- заказать серебро
- Когда вы достигаете серебряного ранга, у вас в основном есть базовые операции, и не будет ситуации, когда вы стоите под местной башней и вас убивают.
- Нам нужно купить скин, чтобы улучшить красоту страницы и больше практиковаться
- Научитесь использовать Ant Financial
ant-design
использование
-
Слава Золото
- На этом этапе Призыватель будет
React
С базовым пониманием, если мы хотим еще больше улучшить наш рейтинг, нам нужно улучшить наше общее представление. - научиться использовать
React-Router4
Сделаем нас многогранными - научиться использовать
BrowserRouter
,Router
,Link
другие компоненты - научиться использовать
Redux
Сотрудничайте с товарищами по команде и культивируйте общую ситуацию - Понимать шаблоны разработки потока данных с одним элементом и
Redux
различные понятия, такие какdispatch
,action
,reducers
- использовать
react-redux
лучше иRedux
При осознании общей ситуации получить платину тоже очень легко
- На этом этапе Призыватель будет
-
Престиж Платинум
- Многие карты призывателя не могут перейти на платину, потому что платина хочет перейти на алмаз, вам нужно знать больше деталей и принципов.
-
React
Принципиальный анализ - Иметь глубокое понимание принципов собственных навыков, что необходимо для бриллиантов.
-
Вечный алмаз
- Алмазный уровень запустил режим «Знамение».Умение призывателя должно быть достаточно глубоким, чтобы идти дальше, и понимание навыков, в которых он хорош, должно быть глубже.
-
Redux
Механизм промежуточного программного обеспечения, реализация собственного промежуточного программного обеспечения - Общие методы оптимизации производительности React
- рендеринг на стороне сервера
-
Redux
В дополнение к другим решениям для обработки данных, таким какmobx
,dva
-
Высшая звезда
- Этот сегмент уже сам по себе сильный игрок.Цель ограничена React.Подойти к следующему уровню сложно.Необходимо понимание лежащих в основе принципов.
-
Redux
Принципиальный анализ + реализация собственногоRedux
-
React-Router
+ реализовывать своиReact-Router
-
Webppack
Анализ механизма и принципа работы -
Babel
Анализ механизма и принципа работы
- самый сильный король
- Достижение самого сильного короля - это уже топ призыватель.Это известное существо во всем Реакт-Каньоне.Я слышал, что есть еще легендарный король славы наверху.Я не могу достичь его в своей жизни, и я не могу научить ты, 囧
- На данном этапе рекомендую только книгу "Руководство по здоровью программиста" Сохранить физическое и психическое здоровье и стать королем славы - вопрос времени.
Перед началом сделайте небольшую рекламу, приглашаю всех обратить внимание на мой практический курс по React на MOOC.comПолная разработка Redux+React Router+Node.js
Начнем наш текст, упрямый бронзовый каталог
- Строительство окружающей среды
- первый компонент
- Вложение компонентов и передача свойств
- Обработка статуса
- Жизненный цикл
Строительство окружающей среды
По умолчанию у вас уже есть среда узла, сначала установите леса
npm install create-react-app -g
Затем создайте проект и начните
create-react-app bronze
cd bronze
npm start
См. схему ниже, что означает первыйReact
приложение запущено
Открываем каталог src
src
├── App.css
├── App.js
├── App.test.js
├── index.css
├── index.js
├── logo.svg
└── registerServiceWorker.js
index.js
Является входным файлом, основной контент должен быть представлен отдельноReact
а такжеReactDom
, затем визуализирует компонентApp
существует#root
на этом элементе
import React from 'react';
import ReactDOM from 'react-dom';
import App from './App';
ReactDOM.render(<App />,document.getElementById('root'));
Затем сосредоточьтесь наApp.js
это конкретное содержание нашего компонента
import React, { Component } from 'react'
class App extends Component {
render() {
return (
<div className="App">
<p>
To get started, edit <code>src/App.js</code> and save to reload.
</p>
</div>
);
}
}
export default App;
это в принципе проще всегоReact
Компоненты, и самостоятельная реализация компонентов тоже разбита на несколько шагов
import React
- Создайте новый класс, наследуйте
React.Component
,React
Каждый компонент может быть записан как класс - Категория
render
Возвращаемое значение функции — это содержимое, отображаемое на странице. -
render
То, что возвращается сюда, это что-то немного странное, якобыhtml
фактическиBabel
положитJSX
Превратиться вReact.createElememt
выполнить - из-за
JSX
Суть в js,class
является ключевым словом js, поэтому используйтеclassName
заменять - Если вы хотите
JSX
отображать переменные, использовать{}
Просто оберните
Сейчасофициальный сайт Бабеля], посмотри наJSX
Скомпилированный код, затем подчеркните ключевые моменты, так называемыеJSX
, по сути это js объект, а дальше использоватьReactDom.render
метод, визуализировать в дом
// jsx
<div className="App">
<p>hello react</p>
</div>
// 转换后
React.createElement(
"div",
{ className: "App" },
React.createElement(
"p",
null,
"hello react"
)
)
первый компонент
Реализуем наш первый компонент, модифицируемApp.js
для
import React, { Component } from 'react'
class App extends Component {
render() {
const level='最强王者'
return (
<div>
<h2>我们的目标是{level}</h2>
</div>
)
}
}
export default App
из-заJSX
По сути, это js, поэтому мы можем{}
Он использует выражения js и другие функции, такие как троичные, функции, переменные и т. д., а также может отображать массивы в списки.
import React, { Component } from 'react'
class App extends Component {
render() {
const level='最强王者'
const isKing = true
const title = isKing
? <p>早睡早起,理性游戏</p>
: <h2>我们的目标是{level}</h2>
const wordList = ['俺老孙来也','有妖气','取经之路,就在脚下']
return (
<div>
{title}
{isKing ? <p>我就是王者</p>: null}
<ul>
{wordList.map(v=><li key={v}>{v}</li>)}
</ul>
</div>
)
}
}
export default App
Здесь следует уделить немного внимания, т.render
, еслиreturn
Несколько элементов должны быть заключены в родительский элемент, иначе будет сообщено об ошибке.
Ставим на возвратJSX
скопировать в переменную,JSX
также можно найти в{}
Тернарное выражение используется внутри, и вы можете изменить егоisKing
даfalse
попробуй
Затем, чтобы отобразить список, мы используемmap
Функция сопоставляется непосредственно сJSX
массив из , помните, что каждый элемент в списке имеетkey
Атрибут, о его функции мы расскажем, когда будем говорить о виртуальном доме.
Вложение компонентов и передача свойств
Если мы продолжим разработку нашего приложения, теперь создайте другоеTank
компоненты, которые могут быть размещены непосредственно наApp
используется в компоненте и может передавать свойство внутри компонента, использоватьthis.props.key
Получать
import React, { Component } from 'react'
class App extends Component {
render() {
const level='最强王者'
const isKing = true
const title = isKing
? <p>早睡早起,理性游戏</p>
: <h2>我们的目标是{level}</h2>
return (
<div>
{title}
{isKing ? <p>我就是王者</p>: null}
<Tank name='程咬金'></Tank>
</div>
)
}
}
class Tank extends Component {
render() {
return (
<div>
<h3>{this.props.name}是一个坦克</h3>
</div>
)
}
}
export default App
Если наш компонент имеет только одинrender
Метод также может быть написан как функция, а реквизиты являются параметрами функции.Мы называем этот компонент компонентом без состояния.Особенность этого компонента в том, что возврат связан только с реквизитами, а возможность повторного использования высока.
function Tank(props){
return (
<div>
<h3>{props.name}是一个坦克</h3>
</div>
)
}
Таким образом, мы можем разделить приложение на несколько компонентов, а затем склеить приложение в виде строительных блоков, но текущие компоненты не могут быть изменены.Далее мы изучим управление состоянием React, то есть состояние
Управление состоянием React и прослушивание событий
Мы инициализируем состояние в конструкторе, который на самом деле является обычным js-объектом, а затем вызываем функцию this.setState для изменения состояния.Каждый раз, когда устанавливается setState, компонент будет перерисовываться.
Вы можете использовать onClick для привязки функции в компоненте, вы можете слушать события пользователя, особо нечего сказать, посмотрите код
class App extends Component {
constructor(props){
super(props)
this.state = {
isKing:true
}
this.handleClick = this.handleClick.bind(this)
}
handleClick(){
this.setState({
isKing: !this.state.isKing
})
}
render() {
const level='最强王者'
const title = this.state.isKing
? <p>早睡早起,理性游戏</p>
: <h2>我们的目标是{level}</h2>
return (
<div>
<button onClick={this.handleClick}>点我</button>
{title}
{this.state.isKing ? <p>我就是王者</p>: null}
<Tank name='程咬金'></Tank>
</div>
)
}
}
Один из моментов, на который мы должны обратить внимание, этоconstructor
, назовем его конструктором, сюда помещается состояние инициализации компонента, устанавливаемisKing
даtrue
,Потомbutton
на элементеonClick
, выполнятьhandleClick
,существуетhandleClick
Внутренний вызовthis.setState
модифицироватьisKing
constructor
в функцииbind
насильноhandleClick
изthis
привязать к компоненту, иначеonClick
будет получено, когдаthis
В ссылке ошибка, есть другие формы для решения этой проблемы, писать не нужноbind
эта линия
import React, { Component } from 'react'
class App extends Component {
constructor(props){
super(props)
this.state = {
isKing:true
}
this.handleClick = this.handleClick.bind(this)
}
// 在constructor里手动 bind
handleClick(){
this.setState({
isKing: !this.state.isKing
})
}
// 绑定的时候传递箭头函数
handleClick1(){
this.handleClick()
}
// 定义的时候是剪头函数
handleClick2 = ()=>{
this.handleClick()
}
// onClick 的时候直接绑定
handleClick3(){
this.handleClick()
}
render() {
const level='最强王者'
const title = this.state.isKing
? <p>早睡早起,理性游戏</p>
: <h2>我们的目标是{level}</h2>
return (
<div>
<button onClick={this.handleClick}>点我</button>
<button onClick={()=>this.handleClick1()}>点我1</button>
<button onClick={this.handleClick2}>点我2</button>
<button onClick={this.handleClick3.bind(this)}>点我3</button>
{title}
{this.state.isKing ? <p>我就是王者</p>: null}
<Tank name='程咬金'></Tank>
</div>
)
}
}
Жизненный цикл
Последнее, что нужно представить, этоReact
В жизненном цикле компонентов у каждого компонента будут разные функции-ловушки, выполняемые в разное время, например, после загрузки компонента он будет выполнен.componentDidMount
функция ловушки
class App extends Component{
componentDidMount(){
console.log('组件渲染完毕')
}
render(){
console.log('组件正在渲染')
return <h2>倔强青铜</h2>
}
}
// 组件正在渲染
// 组件渲染完毕
React
На разных этапах будут выполняться разные функции, я нашел в интернете картинку, на которой наглядно показаны сроки выполнения каждой функции жизненного цикла.
class App extends Component {
constructor(props){
super(props)
this.state = {
isKing:true
}
this.handleClick = this.handleClick.bind(this)
console.log('constructor App 的构造函数,初始化先执行')
}
handleClick(){
this.setState({
isKing: !this.state.isKing
})
}
componentWillMount(){
console.log('componentWillMount,组件 App 准备渲染')
}
componentDidMount(){
console.log('componentDidMount,组件 App 渲染完毕')
}
shouldComponentUpdate(){
console.log('shouldComponentUpdate,判断 App 组件是否应该渲染, 默认返回 true')
return true
}
componentWillUpdate(){
console.log('componentWillUpdate,组件 App 准备更新了')
}
componentDidUpdate(){
console.log('componentDidUpdate, 组件 App 更新完毕了')
}
render() {
const level='最强王者'
const title = this.state.isKing
? <p>早睡早起,理性游戏</p>
: <h2>我们的目标是{level}</h2>
const wordList = ['俺老孙来也','有妖气','取经之路,就在脚下']
console.log('组件 App 正在渲染')
return (
<div>
<button onClick={this.handleClick}>点我</button>
{title}
{this.state.isKing ? <p>我就是王者</p>: null}
<ul>
{wordList.map(v=><li key={v}>{v}</li>)}
</ul>
<Tank name='程咬金'></Tank>
</div>
)
}
}
// 首次加载打印
constructor App 的构造函数,初始化先执行
componentWillMount,组件 App 准备渲染
组件 App 正在渲染
componentDidMount,组件 App 渲染完毕
// 点击按钮修改状态时打印
shouldComponentUpdate,判断 App 组件是否应该渲染, 默认返回 true
componentWillUpdate,组件 App 准备更新了
组件 App 正在渲染
componentDidUpdate, 组件 App 更新完毕了
Помимо вышеперечисленных, существуют также
-
React16
добавленcomponentDidCatch
Жизненный цикл, используемый для обработки ошибок -
shouldComponentUpdate
вернутьfalse
, то компонент не будет отображаться - Если это подкомпонент, существует также
componentWillReceiveProps
- Удаление компонента имеет
componentWillUnmount
, используется для очистки ресурсов - Разумно используйте жизненный цикл, чтобы делать разные вещи на разных этапах
Если вы можете видеть здесь, это действительно правдаReact
Это настоящая любовь, поздравляю, у тебя уже серебро в порядке, получай значок
Приглашаю всех обратить внимание на мои практические курсы на MOOC.comПолная разработка Redux+React Router+Node.js
Следующее уведомление: Заказать серебряную главу -- использоватьant-designБиблиотека пользовательского интерфейса, если у вас есть какие-либо вопросы, оставьте сообщение, мы также можем открыть черный и пойти к королю вместе.