gpt4 book ai didi

reactjs - componentDidUpdate 中的 prevState 是 currentState?

转载 作者:行者123 更新时间:2023-12-03 13:21:26 31 4
gpt4 key购买 nike

我过去使用过 componentDidUpdate() 并且它按预期工作。

然而,这一次我做到了

componentDidUpdate(prevProps, prevState) {
if (prevState.object.someString !== this.state.object.someString) {
console.log(true);
}
}

true 永远不会被记录。我将两个状态对象记录到控制台,发现它们完全相同:当前状态。

这是一个错误吗?我在这里缺少什么?

谢谢。

编辑:我尝试使用 componentWillUpdate(nextProps, nextState) 执行相同的操作,并且它们是同一个对象。

编辑2:我正在通过以下方式更改状态:

modifyObject = (field, value) => {
const { object } = this.state;
object[field] = value;
this.setState({ object });
}

最佳答案

在添加的代码中,您通过仅更改对象的属性来改变引用对象。这意味着最终 nextPropspreviousProps 本质上引用相同的引用。

因此,您的 componentDidUpdate 没有发现差异也就不足为奇了。

您应该做的是创建对象的新版本,并使用该版本来设置状态,例如:

this.setState({ object: { ...object, [field]: value } })

或者如果您没有扩展运算符,例如

this.setState( { object: Object.assign({}, object, { [field]: value }) } );

关于reactjs - componentDidUpdate 中的 prevState 是 currentState?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48057906/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com