我尝试比较上一个道具和新道具,如果不一样,则更新状态。 但是我每次都得到空的上一个道具
componentWillReceiveProps = (props, prevProps) => {
if (
props.data.length > 0 &&
props.data !== prevProps.data
) {
this.setState({
data: props.data
});
}
}
道具更改时,我需要比较新旧道具,如果新旧道具不相同,则需要更新状态。
答案 0 :(得分:0)
答案 1 :(得分:-1)
阅读有关componentWillReceiveProps的文档。此方法仅提供1个参数-nextProps
答案 2 :(得分:-1)
为回答您的原始问题,不建议使用componentWillReceiveProps已有一段时间。理想情况下,您使用https://reactjs.org/docs/react-component.html#static-getderivedstatefromprops来实现您在这里所做的事情。尽管应谨慎使用,但我仍然很难理解为什么要复制这样的状态。
您还可以执行componentDidUpdate(prevProps),然后将this.props用作当前值。
我有一段时间没有使用基于类的组件了。我现在使用钩子。