Я понимаю, что getInitialState вызывается один раз в жизненном цикле компонента, а componentDidMount вызывается при рендеринге компонента.
Значит ли это, что оба будут вызываться только один раз в жизненном цикле компонента? Какая разница?
Я понимаю, что getInitialState вызывается один раз в жизненном цикле компонента, а componentDidMount вызывается при рендеринге компонента.
Значит ли это, что оба будут вызываться только один раз в жизненном цикле компонента? Какая разница?
getInitialState
вызывается при первом создании компонента. Он всегда должен возвращать объект, и этот объект будет начальным состоянием this.state
внутри компонента. Вам не нужно определять getInitialState
, если вы этого не хотите, возможно, вам не нужно внутреннее состояние, и в этом случае не определяйте его.
componentDidMount
вызывается после фактического монтирования компонента в DOM. Но не, как вы предложили, каждый раз при рендеринге компонента. Если вы ищете что-то, что запускается каждый раз при рендеринге компонента (кроме render
), взгляните на componentWillUpdate и/или componentDidUpdate.
Что касается основных отличий, то getInitialState
буквально должен возвращать начальное состояние для этого компонента, ничего больше. Функция выполняется задолго до фактического рендеринга компонента в DOM. componentDidMount
выполняется сразу после рендеринга компонента в DOM, поэтому, например, теперь вы можете делать вещи, которые требуют, чтобы компонент сначала находился в DOM, например, использовать this.getDOMNode()
для проверки точной высоты корневого HTML-элемента вашего компонента или изменение положения прокрутки.
Однако вы правы, оба будут вызываться только один раз за время существования экземпляра вашего компонента React.