这就是我们如何使用 componentWillReceiveProps
componentWillReceiveProps(nextProps) {
if(nextProps.myProp !== this.props.myProps) {
// nextProps.myProp has a different value than our current prop
}
}
它非常类似于 componentDidUpdate
componentDidUpdate(prevProps) {
if(prevProps.myProps !== this.props.myProp) {
// this.props.myProp has a different value
// ...
}
}
我可以看到一些差异,比如如果我在 componentDidUpdate 中执行 setState,render 将触发两次,并且 componentWillReceiveProps 的参数是 nextProps,而参数componentDidUpdate
是 prevProp,但严重的是我不知道何时使用它们。我经常使用componentDidUpdate
,但使用 prevState,比如更改下拉状态并调用 api
例如。
componentDidUpdate(prevProps, prevState) {
if(prevState.seleted !== this.state.seleted) {
this.setState({ selected: something}, ()=> callAPI())
}
}