Мутирование состояния в shouldComponentUpdate реагировать 16.6.3 - PullRequest
0 голосов
/ 26 ноября 2018

Поскольку реакции устарели, многие из них Lifecycle Methods я обнаружил, что при использовании redux и connect, когда я хочу увеличить локальное состояние component, я использую componentDidUpdate,Проблема только в том, что prevProps, prevState передается в эту функцию.

Это означает, что у меня есть nextProps, nextState внутри shouldComponentUpdate lifeCycle`.

Мне кажется, что по своей сути неправильно делать что-то следующим образом:

  shouldComponentUpdate(nextProps) {
    const { status_status } = nextProps;
    if(status_status === "error") {
      this.props.dispatch(resetStatus());
    }
    return true;
  }

Это, безусловно, antiPattern, и я не должен этого делать.

Как я могу получить nextProps без использования shouldComponentUpdate

1 Ответ

0 голосов
/ 26 ноября 2018

У меня был похожий случай, и я нашел getDerivedStateFromProps полезным и подходящим в таких условиях.

static getDerivedStateFromProps(props, state) {
  // now, you may dispatch checking the condition
  // BTW, you will dispatch just using props
  // props.dispatch()
  // this.props.dispatch() // invalid
}

Я знаю это примечание из документов :

Если вам нужно выполнить побочный эффект (например, выборку данных или анимацию) в ответ на изменение реквизита, используйте вместо этого жизненный цикл componentDidUpdate.

Но я просто делюсь своим опытом, чтобыл только рабочий случай getDerivedStateFromProps.

Однако я бы также предложил вам сначала использовать componentDidUpdate hook.И если тебе все кажется хорошим, то придерживайся этого.Или, если вы также сталкиваетесь с использованием componentDidUpdate и чувствуете себя хорошо, используя getDerivedStateFromProps, вы можете опубликовать свое мнение и идеи в качестве ответа.

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