Инициализация состояния отличается в зависимости от того, какой синтаксис React ты используешь. Два основных подхода — это constructor для ES6-классов и getInitialState() для устаревшего паттерна React.createClass().
Используй метод constructor для инициализации состояния в современных приложениях React:
class MyComponent extends React.Component {
constructor(props) {
super(props)
this.state = {
/* initial state */
}
}
}
Конструктор получает props как параметр и должен вызвать super(props) перед обращением к this. Состояние инициализируется как обычный объект, присваиваемый this.state.
Старый метод getInitialState() использовался вместе с React.createClass():
const MyComponent = React.createClass({
getInitialState() {
return {
/* initial state */
}
}
})
Этот метод возвращает объект с начальными значениями состояния.
React.createClass() устарел и удалён начиная с React v16. Для новых проектов следует всегда использовать синтаксис ES6-классов или функциональные компоненты с хуками.
Для современной разработки лучше использовать функциональные компоненты с хуком useState:
function MyComponent() {
const [state, setState] = useState({
/* initial state */
})
}
Этот подход более лаконичен и считается актуальной best practice в React.
Метод constructor в ES6 классовых компонентах должен вызвать super(props) перед доступом к this, чтобы правильно инициализировать экземпляр компонента.
Новый — ещё не проверен сообществом
Вы