Подтвердить что ты не робот

React - setState в компонентеWillReceiveProps

Является ли это законным?

componentWillReceiveProps: function(nextProps) {
        if (typeof nextProps.contact != 'undefined') {
            this.setState({forename: nextProps.contact.forename});
            this.setState({surname: nextProps.contact.surname});
            this.setState({phone: nextProps.contact.phone});
            this.setState({email: nextProps.contact.email});
        }
    }

Потому что я не знаю, как заполнять мои входы и все еще могу, чтобы пользователь мог редактировать входы. Поэтому я придумал это решение вместо того, чтобы пытаться манипулировать этим .props.

Любые предложения?

4b9b3361

Ответ 1

Ваш код является законным в соответствии с реагировать на документацию.

Вы также можете рассмотреть возможность ввода этого кода внутри метода getInitialState, поскольку согласно другому реактору doc инициализация из реквизита не является анти-шаблоном.

Вы также можете заменить несколько вызовов одним вызовом метода setState:

 this.setState({forename: nextProps.contact.forename,
                surname: nextProps.contact.surname,
                phone: nextProps.contact.phone,
                email: nextProps.contact.email});

Ответ 2

И Babelify, где возможно:)

componentWillReceiveProps({
  contact: {
    forename,
    surname,
    phone,
    email,
  } = {},
}) {
  if (forename !== undefined) {
    this.setState({
      forename,
      surname,
      phone,
      email,
    });
  }
}