componentdiduupdate处理prevState和this.国家平等



我有我的状态,我用这个函数更新:

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 })

相关内容

最新更新