2015-06-17 3 views
3

Я понимаю, что getInitialState вызывается один раз в жизненном цикле компонента, а компонентDidMount вызывается, когда компонент визуализируется.разница между компонентомDidMount и getInitialState в Reactjs

Значит ли это, что оба вызова будут вызваны только один раз в жизненном цикле компонента? Какая разница?

ответ

16

getInitialState вызывается при первом экземпляре компонента. Он должен всегда возвращать объект, и этот объект будет начальным состоянием this.state внутри компонента. Вам не нужно определять getInitialState, если вы этого не хотите, возможно, вам не нужно внутреннее состояние, и в этом случае вы не определяете его.

componentDidMount вызывается, когда компонент фактически установлен на DOM. Но нет, как вы сказали, каждый раз, когда компонент визуализируется. Если вы ищете что-то, что запускается каждый раз, когда компонент отображается (кроме render), посмотрите на componentWillUpdate и/или componentDidUpdate.

Что касается основных отличий, то getInitialState вполне буквально должен возвращать исходное состояние для этого компонента, ничего больше. Функция выполняется задолго до того, как компонент фактически будет передан в DOM. componentDidMount выполняется непосредственно после того, как компонент был передан в DOM, поэтому, например, теперь вы можете выполнять действия, требующие, чтобы компонент был в DOM в первую очередь, например, с помощью this.getDOMNode() для проверки точной высоты корневого элемента HTML вашего компонента или изменяя его положение прокрутки.

Вы правы, хотя оба они будут вызываться только один раз в жизни экземпляра вашего компонента React.