Хотя вы можете посмотреть на заголовок и подумать про себя, что я буду обсуждать какой-то знаковый случай, вместо этого я расскажу о экземплярах компонента React в JavaScript.
Что такое Реакт?
React — это библиотека JavaScript, созданная Facebook для более быстрого и простого создания компонентов пользовательского интерфейса. React использует Babel, компилятор JavaScript, способный переводить языки программирования в JavaScript. React использует его для преобразования JavaScriptXML (JSX) в JavaScript. Примером JSX и элемента React может быть:
const element = <h1 id =‘header’>Hello World!</h1>
JSX — это расширение JavaScript, которое, как и HTML, может иметь имена тегов, атрибуты и дочерние элементы. Если сравнить с созданием того же элемента в ванильном JavaScript,
let element = document.createElement(‘h1’) element.id = ‘header element.innerText = ‘Hello World!’
Таким образом, JSX позволяет нам сократить количество кода, необходимого для создания и присвоения имен элементам!
Приложения React обычно строятся вокруг одного элемента HTML, который разработчики React часто называют корневым узлом.
<div id='root'></div>
Элементы отображаются, когда вызывается следующая функция
ReactDOM.render(element, document.getElementById('root'));
Элементы React нельзя изменить, единственный способ изменить элемент React — это визуализировать новый элемент каждый раз, когда вы хотите что-то изменить.
Реквизит против состояния
В компоненте React свойства — это переменные, переданные ему его родительским компонентом, однако состояние напрямую инициализируется и управляется компонентом. В следующем примере родительский компонент может включать в себя дочерний компонент и передавать реквизит, вызывая
<ChildComponent color=green/>
Внутри конструктора ChildComponent мы можем получить доступ к свойству
class ChildComponent extends React.Component {
constructor(props) {
super(props)
console.log(props.color)
}
}
Состояние, с другой стороны, будет чем-то, что указано внутри конструктора:
constructor(){ super(); this.state={ count: 0, }; }
Здесь состояние получает исходные данные, оно может быть жестко запрограммировано, как в предыдущем примере, или может исходить из реквизита. Разница в том, что свойства нельзя изменить, а состояние можно.
Помните, я сказал, что React не может изменять элементы, его нужно перерисовывать каждый раз, когда вы хотите его обновить? Вот тут-то и появляется setState! В следующем примере мы используем функцию для обновления количества лайков, которые имеет пост:
updateLikes() { this.setState((prevState) => { return { count: prevState.count +1} }); }
setState в предыдущем примере принимает функцию, поскольку она может выполняться асинхронно, поэтому вместо непосредственного обновления состояния требуется функция обратного вызова. React обновит объект состояния и перерендерит компонент одновременно.
Хотя может возникнуть соблазн написать
this.state.count = this.state.count + 1
Это плохая практика, потому что React не может прослушивать обновление состояния, поэтому ваш компонент не будет повторно отображаться.
Общий:
Свойства и состояние содержат информацию о компоненте:
Реквизиты устанавливаются родительским компонентом и не должны изменяться
Состояние содержит информацию, которая обычно инициируется внутри компонента и может быть изменена.
Я надеюсь, что вы нашли этот блог полезным, ознакомьтесь с Руководством по React Facebook для более глубокого анализа свойств и состояния, а также подписывайтесь на меня в LinkedIn и Github.