У меня была следующая проблема, которую я исправил с помощью метода жизненного цикла componentWillReceiveProps
. А сейчас, обновляя версии React, у меня возникают проблемы при миграции с него.
В моем корневом компоненте App.js
я вызываю действие, которое извлекает зарегистрированную информацию о пользователе (оно равно нулю, если не зарегистрировано). Я использую редукс, так что его положили в мой магазин.
У меня есть другой компонент, который называется MyPolls, который выбирает список опросов, отправленных пользователем, поэтому ему нужна информация о пользователе в моем магазине. Это прекрасно работает, если я не на странице MyPolls.js
и я не обновляю браузер. Состояние теряется, и поэтому я больше не могу получать опросы на основе зарегистрированной информации пользователя.
В то время я исправил это с помощью следующего кода:
componentWillReceiveProps(nextProps) {
if (!this.props.auth && nextProps.auth) {
this.props.getMyPolls(nextProps.auth._id, this.state.pageSize, 0)
}
}
Обновление страницы удовлетворяет предикату !this.props.auth && nextProps.auth
, и поэтому я затем запускаю действие, которое снова выбирает пользовательские опросы. Моя проблема и решение очень похоже на этот
Теперь я пытаюсь решить эту проблему без использования componentWillReceiveProps
, так как этот хук жизненного цикла не рекомендуется. Я пытался заменить его на componentDidUpdate
, но это не работает. Приложение сначала отображает компонент, прежде чем что-либо извлечено, в этот момент вызывается componentWillReceiveProps
, а затем приложение перерисовывается. componentDidUpdate
называется после повторного выполнения.
Я также пытался вызвать this.props.getMyPolls(nextProps.auth._id, this.state.pageSize, 0)
, чтобы получить опросы пользователя во время componentDidMount
, как это происходит после первоначального рендеринга. Это также не работает, потому что на данный момент информация пользователя все еще null
.
Может кто-нибудь помочь с этой проблемой?