Миграция из componentWillReceiveProps при выборке для обновления состояния из родительского компонента - PullRequest
0 голосов
/ 14 ноября 2018

У меня была следующая проблема, которую я исправил с помощью метода жизненного цикла 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.

Может кто-нибудь помочь с этой проблемой?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...