我有我的状态,我用这个函数更新:
doChangeValue(data) {
const dataNew = this.state.data
dataNew[data.id] = data.value
this.setState({ ...dataNew, [dataNew[data.id]]: data.value})
}
一开始看起来像这样,但这是一种变异的方式,所以我用上面的版本修改了它:
const dataNew = this.state.data
dataNew[data.id] = data.value
this.setState({ data: dataNew })
还有ComponentDidUpdate:
componentDidUpdate(prevProps, prevState) {
const prev = prevState.data
const curr = this.state.data
const isStateChanged = isEqual(prev, curr)
console.log(isStateChanged);
}
我的问题是我的两个变量prev和咕咕叫isstatechange-总是返回true,即使我改变了状态
我用谷歌搜索它,问题似乎是我引用相同的对象bc我的函数,我改变状态可能会改变它。但现在我用的是扩展算子,它不会改变状态。我哪里做错了?
问题中的doChangeValue仍处于变异状态。我使用对象。这就解决了问题。现在,每当我改变状态中的smthg时它就会显示prevState和当前状态之间的差异:
const newState = Object.assign({}, this.state.data)
newState[data.id] = data.value
this.setState({data: newState })