Реагировать на состояние штатной нагрузки при редуксе - PullRequest
0 голосов
/ 26 апреля 2018

Я хочу, чтобы функция getKey ожидала обновленного состояния от friendExist.В настоящее время getKey имеет значение false в качестве начального состояния, однако friendExist должен установить логическое значение «true».Но похоже, что this.props.getKey (this.props.exist) «не ждал» обновления this.props.friendExist (uid), прежде чем запускать код.

componentDidMount(){
 const uid = 'MZdKuFpGmGRntb0nyF4PO0f6kco1';
 this.props.friendExist(uid);
 //friendExist should update this.props.exist to true 
 this.props.getKey(this.props.exist)
}

ОбаfriendExist и getKey - действия, которые отправляют новое состояние.

Ответы [ 2 ]

0 голосов
/ 27 апреля 2018

Ваша функция componentDidMount является синхронной функцией, поэтому она будет выполняться внутри кода, не ожидая каких-либо несвязанных функций. Если вы не измените его тип на асинхронный и точно не скажете, как вы хотите, чтобы он ожидал, this.props.exist никогда не будет истинным во время выполнения this.props.getKey.

Альтернативное, более простое решение - взять обновление this.props.exist на componentWillReceiveProps и вместо него выполнить this.props.getKey

componentDidMount(){
 const uid = 'MZdKuFpGmGRntb0nyF4PO0f6kco1';
 this.props.friendExist(uid);
}

componentWillReceiveProps(nextProps, nextState) {
  if (nextProps.exist) {
    this.props.getKey(nextProps.exist)
  }
}
0 голосов
/ 27 апреля 2018

Я предполагаю, что вы используете response-redux mapStateToProps () для получения обновленного состояния.Такое поведение ожидается, так как response-redux использует внутреннюю реагирующую функцию setState (), что является асинхронным, то есть ваше состояние может не отображаться на реквизиты в то время, когда вы отправляете действие.

Я предлагаю создать функцию getKeyIfFriendExist () вместо этого выполняется диспетчеризация и проверка последнего состояния внутри.

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