最佳答案
看起来 componentWillReceiveProps
将在即将发布的版本中被完全淘汰,这有利于一种新的生命周期方法 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)
});
}
}
}
之后
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;
}
}