【发布时间】:2018-06-11 23:28:48
【问题描述】:
我过去使用过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 });
}
【问题讨论】:
-
你能显示触发状态更新的其余代码吗?看起来状态实际上并未更新?
-
状态被对象的改变所修改,如下所示:
modifyObject = (field, value) => { const { object } = this.state; character[field] = value; this.setState({ object }); } -
character是什么?它从何而来?你也没有改变你的object变量。从外观上看,您只是在像以前一样更新状态 -
componentDidUpdate 不仅在 state 改变时调用,而且在 parent 重新渲染或 props 改变时调用
-
你能展示一段代码来改变你的状态吗?我觉得很奇怪。
标签: reactjs react-native state