gpt4 book ai didi

javascript - react 状态更新不正确

转载 作者:行者123 更新时间:2023-11-29 17:34:24 25 4
gpt4 key购买 nike

预期:我正在尝试访问变量中的状态数据并操作该变量。我将再次将操作日期设置为 setstate。

问题:当我将一个状态分配给一个变量时,它不是仅仅复制状态中的数据,而是状态本身的副本,因此当我操作数据时,状态本身发生了变化。

注意:在下面的代码中,tmpData.splice 是当我更改 tmpData 变量时状态发生变化的地方。

onRowAdd: newData => new Promise(resolve => {
setTimeout(() => {
{
const { data } = this.state;
const tmpData = data;
const tmpRowData = this.getRowData(this.state.valorenVal ? this.state.valorenVal : newData.nr ? newData.nr : '');
if (tmpRowData.length >= 1) {
if (newData.number && tmpRowData[0].nr) {
tmpRowData[0].number = newData.number ? newData.number : '';

tmpData.splice(tmpData.length, 0, tmpRowData[0]);

this.setState({ data: tmpData }, () => resolve());
this.setState({ valorenVal: '' });
} else {
this.setState({ data }, () => resolve());
}
} else {
this.setState({ data }, () => resolve());
}
}
resolve();
}, 1000);
}),

我是 React 的新手,这可能是一个愚蠢的问题,但您的回答将帮助我更好地理解 React。

最佳答案

在 React 中,你需要避免 direct state mutations ,因为它会阻止 React 准确地跟踪发生的变化。假设 data 是一个数组,您可以像这样创建它的副本:

const tmpData = [...data];

const tmpData = Array.from(data);

在使用 setState

更新状态之前,根据需要对其进行尽可能多的编辑,而不会导致不必要的突变

关于javascript - react 状态更新不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58653194/

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