Есть ли способ узнать, был ли обновлен конкретный реквизит без использования состояния в React?

Я использую React, Redux и некоторые другие компоненты.

Я использую это модальное окно, чтобы предупредить пользователей об ошибках. , но если вы посмотрите на это, это не совсем компонент, это функция, поэтому прямо сейчас я использую componentDidUpdate вот так:

componentDidUpdate () {
  if (this.props.states.ErrorReducer.displayError) {
    error(() => {
      this.props.dispatch(ErrorActionCreators.acceptError())
    }, this.props.states.ErrorReducer.errorMessage )
  }
}

Проблема в том, что если я делаю несколько изменений состояния одновременно, например, делаю несколько вызовов API, и они изменяют состояние в разное время, этот мод открывается несколько раз.

Я мог бы использовать состояние, чтобы сделать что-то вроде

if (this.state.displayError !== this.props.displayError {
  updateState();
  error();
}

Но я избегаю использования состояния React.

Могу ли я в любом случае проверить, была ли изменена одна конкретная опора в компоненте?


person iagowp    schedule 06.06.2017    source источник


Ответы (1)


Вы можете использовать метод жизненного цикла, componentWillReceiveProps. Это вызывается каждый раз при обновлении реквизита. Вот ссылка на справку componentWillreceiveProps и фрагмент кода:

componentWillReceiveProps(nextProps){
  if(this.props !== nextProps){
    // your code and conditions go here
  }
}

Фактически вы можете сравнить старые реквизиты (this.props) с новыми или обновленными реквизитами (nextProps).

person Arslan Tariq    schedule 06.06.2017