почему я не получаю обновленное значение реквизита в реакции - PullRequest
1 голос
/ 13 апреля 2019

Подскажите, пожалуйста, почему я не получаю обновленное значение реквизита в реакции.

вот мой код https://stackblitz.com/edit/react-redux-basic-counter-1e8gdh?file=shared/components/NavBar.js

В моем примере у меня есть кнопка - .на щелкнуть по нейуменьшить значение.Я отправляю значение действия decremented, но я не получаю updated value

 handle=()=>{
    this.props.decrement();
    this.getCount();
  }

  getCount=()=>{
    const {counter}= this.props;
    console.log(counter);
  }

см. Мой console.log

ожидаемый вывод -1

токовый выход 0

почему?Он показывает вывод, когда я нажимаю на кнопку -

1 Ответ

3 голосов
/ 13 апреля 2019

Причина в том, что в момент вывода значения в консоли реквизиты не обновляются.Когда реквизиты обновляются, компонент реакции перерисовывается и отображает значение счетчика.Чтобы проверить, что вы можете использовать setTimeout.

  handle=()=>{
    this.props.decrement();
    setTimeout(this.getCount,10)
  }

, если вы хотите сохранить в журнале значение, вы можете в течение жизненного цикла.Вы можете использовать componentDidUpdate

   componentDidUpdate(prevProps) {
    if (this.props.counter !== prevProps.counter) {
      console.log(this.props.counter);
    }
  }

или componentWillReceiveProps (для версии реакции <16) </p>

  componentWillReceiveProps(newProps) {
  if( newProps.counter != this.props.counter ) {
    console.log(newProps.counter);
  }
}

или иначе getDerivedStateFromProps (версия реакции 16 +)

  static getDerivedStateFromProps(nextProps, prevState) {
  if(nextProps.counter !== prevState.counter ) {
     console.log(nextProps.counter);
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...