Подтвердить что ты не робот

Какие типы инициализации более подходят для конструктора и компонентаWillMount?

Если у меня есть компонент React, который требует некоторой настройки (например, для таймеров или API WebAudio и т.д.), у меня возникли проблемы с решением, должна ли инициализация идти в constructor или componentWillMount. Есть ли какие-либо преимущества или недостатки для одного? Мне непонятно, какой из них лучше для этого.

Я немного разобрался, чтобы узнать, обсудили ли кто-то различия между constructor и componentWillMount, но я ничего не смог найти.

EDIT: Redux и любые асинхронные функции не должны быть частью уравнения.

4b9b3361

Ответ 1

Как правило, единственное, что вы делаете в конструкторе, - назначить свой начальный this.state, если ваш компонент является состоятельным. Вы не должны делать ничего другого в конструкторе.

componentWillMount, как правило, не требуется. Я бы сказал, что в большинстве случаев его использование является анти-шаблоном. Одна из причин, по которой люди используют это, - это обновление состояния от внешнего источника за последний раз до рендеринга, но технически назначение его в конструкторе эквивалентно. Единственное небольшое удобство, которое он предоставляет, состоит в том, что вы можете setState внутри него, но вы не можете внутри конструктора.

Для любых побочных эффектов (выборка данных или обработка DOM) вы должны использовать componentDidMount.

Ответ 2

Если вы хотите вызвать какое-либо действие потока (для вызовов ajax), используйте componentWillMount или componentDidMount.

Вы можете инициализировать состояние в конструкторе