【发布时间】:2018-08-29 09:24:20
【问题描述】:
这就是我们使用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,渲染将触发两次,并且 componentWillReceiveProps 的参数是 nextProps,而 componentDidUpdate 的参数是 prevProp,但我真的不知道什么时候使用它们.我经常使用componentDidUpdate,但是使用prevState,比如更改下拉状态并调用api
例如。
componentDidUpdate(prevProps, prevState) {
if(prevState.seleted !== this.state.seleted) {
this.setState({ selected: something}, ()=> callAPI())
}
}
【问题讨论】:
-
我认为这可以帮助你reactjs.org/docs/react-component.html#componentwillmount有一个所有生命周期方法的列表
-
没有真正回答你的问题???? .. The React team appears to be preparing to deprecate all of the
willlifecycle methods. 我会说这是一个不错的信号,可以坚持/迁移到didmethods。
标签: javascript reactjs