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.
Любые предложения?
Ответы
Ответ 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,
});
}
}