Похоже, что в следующих выпусках componentWillReceiveProps
будет полностью прекращен в пользу нового метода жизненного цикла getDerivedStateFromProps
:static getDerivedStateFromProps().
После проверки кажется, что вы теперь не можете провести прямое сравнение между this.props
и nextProps
, как вы можете это сделать в componentWillReceiveProps
. Есть ли способ обойти это?
Кроме того, теперь он возвращает объект. Правильно ли я предположить, что возвращаемое значение по существу this.setState
?
Ниже приведен пример, который я нашел в Интернете: Состояние, полученное из реквизита/состояния.
Перед
class ExampleComponent extends React.Component {
state = {
derivedData: computeDerivedState(this.props)
};
componentWillReceiveProps(nextProps) {
if (this.props.someValue !== nextProps.someValue) {
this.setState({
derivedData: computeDerivedState(nextProps)
});
}
}
}
После того, какAfter
class ExampleComponent extends React.Component {
// Initialize state in constructor,
// Or with a property initializer.
state = {};
static getDerivedStateFromProps(nextProps, prevState) {
if (prevState.someMirroredValue !== nextProps.someValue) {
return {
derivedData: computeDerivedState(nextProps),
someMirroredValue: nextProps.someValue
};
}
// Return null to indicate no change to state.
return null;
}
}