状态覆盖上次更新的值
State is overriding with last updated value
我有下面的函数,我正在更新存储在状态中的数组作为数组,我有 9 个 tables,对于每个 table,我调用这个函数来检查状态和如果它是真的那么我将把它存储在数组中。
const [projectSpaceTypeWarning, setProjectSpaceTypeWarning] = useState([]);
const handleWarning = (librarySourceTableWarning, status) => {
let spaceTypeWarningCount = [...projectSpaceTypeWarning];
if (status) {
spaceTypeWarningCount.push(librarySourceTableWarning);
} else {
spaceTypeWarningCount = spaceTypeWarningCount.filter(
item => item !== librarySourceTableWarning
);
}
setProjectSpaceTypeWarning(spaceTypeWarningCount);
};
我正在设置另一个基于此状态的变量,如下所示
if (projectSpaceTypeWarning.length) {
values.spaceType.isInWarningState = true;
}
我的问题是我正在用一个 table 更新此状态,该状态将 status
设为 true 并且相应地设置状态,这很好。我还剩下 table 那些都将状态发送为 false 并相应地设置状态。 false
状态以某种方式覆盖状态数组中的 true
状态。
任何人都可以告诉我如何解决这个问题的任何建议或想法。
非常感谢。
我已经使用下面的代码解决了这个问题
const handleWarning = (librarySourceTableWarning, status) => {
let spaceTypeWarningCount = projectSpaceTypeWarning; // changes at here
if (status) {
spaceTypeWarningCount.push(librarySourceTableWarning);
} else {
spaceTypeWarningCount = spaceTypeWarningCount.filter(
item => item !== librarySourceTableWarning
);
}
setProjectSpaceTypeWarning(spaceTypeWarningCount);
};
我有下面的函数,我正在更新存储在状态中的数组作为数组,我有 9 个 tables,对于每个 table,我调用这个函数来检查状态和如果它是真的那么我将把它存储在数组中。
const [projectSpaceTypeWarning, setProjectSpaceTypeWarning] = useState([]);
const handleWarning = (librarySourceTableWarning, status) => {
let spaceTypeWarningCount = [...projectSpaceTypeWarning];
if (status) {
spaceTypeWarningCount.push(librarySourceTableWarning);
} else {
spaceTypeWarningCount = spaceTypeWarningCount.filter(
item => item !== librarySourceTableWarning
);
}
setProjectSpaceTypeWarning(spaceTypeWarningCount);
};
我正在设置另一个基于此状态的变量,如下所示
if (projectSpaceTypeWarning.length) {
values.spaceType.isInWarningState = true;
}
我的问题是我正在用一个 table 更新此状态,该状态将 status
设为 true 并且相应地设置状态,这很好。我还剩下 table 那些都将状态发送为 false 并相应地设置状态。 false
状态以某种方式覆盖状态数组中的 true
状态。
任何人都可以告诉我如何解决这个问题的任何建议或想法。
非常感谢。
我已经使用下面的代码解决了这个问题
const handleWarning = (librarySourceTableWarning, status) => {
let spaceTypeWarningCount = projectSpaceTypeWarning; // changes at here
if (status) {
spaceTypeWarningCount.push(librarySourceTableWarning);
} else {
spaceTypeWarningCount = spaceTypeWarningCount.filter(
item => item !== librarySourceTableWarning
);
}
setProjectSpaceTypeWarning(spaceTypeWarningCount);
};