разница между componentDidMount и getInitialState в Reactjs

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

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


person wolfgang    schedule 17.06.2015    source источник


Ответы (1)


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

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

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

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

person Mike Driver    schedule 17.06.2015