Похоже, что componentWillReceiveProps
в следующих выпусках он будет полностью прекращен в пользу нового метода жизненного цикла getDerivedStateFromProps
: static getDerivedStateFromProps () .
При осмотре похоже, что теперь вы не можете провести прямое сравнение между this.props
и nextProps
, как вы можете в componentWillReceiveProps
. Есть ли способ обойти это?
Кроме того, теперь он возвращает объект. Правильно ли я предполагаю, что возвращаемое значение по существу this.setState
?
Ниже приведен пример, который я нашел в Интернете: Состояние, полученное из props / state .
Перед
class ExampleComponent extends React.Component {
state = {
derivedData: computeDerivedState(this.props)
};
componentWillReceiveProps(nextProps) {
if (this.props.someValue !== nextProps.someValue) {
this.setState({
derivedData: computeDerivedState(nextProps)
});
}
}
}
После
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;
}
}
componentWillReceiveProps