【发布时间】:2021-09-28 17:58:25
【问题描述】:
我在使用 React 时遇到了问题,我的钩子状态在没有调用 setState 的情况下更新。
const [dataSet2, setDataSet2] = React.useState([
[2, 3, 4],
[5, 6, 7],
[8, 9, 9],
]);
const badFunction = () => {
let selections = [];
let newSelections = [];
let winPercent = 0;
let newWinPercent = 1;
const depth = 2;
const dataHolderTest = dataSet2;
let firstWeekTest = dataHolderTest[0];
const weekOneTeamsTest = firstWeekTest.slice(0, depth);
for (const weekOneTeamTest of weekOneTeamsTest) {
let secondWeekTest = dataHolderTest[1];
newWinPercent = weekOneTeamTest.win_percent * newWinPercent;
newSelections.push(weekOneTeamTest.team);
for (const team2 of secondWeekTest) {
removeAllSelectedTeams(newSelections, secondWeekTest, team2);
}
}
console.log(dataSet2);
};
const removeAllSelectedTeams = (selections, dataHolder, team) => {
if (selections.includes(team.team)) {
const currentTeam = dataHolder.indexOf(team);
dataHolder.splice(currentTeam, 1);
}
return dataHolder;
};
我已经对此进行了一段时间的挑选,似乎removeAllSelectedTeams 函数是问题所在。
我仍然不明白我的dataSet2 是如何在不调用钩子setDataSet2 的情况下被更改的
【问题讨论】:
-
.splice改变当前状态。 -
这能回答你的问题吗? How to delete an item from state array?
-
@EmileBergeron 但我没有在 dataSet2 上运行
.splice仅在它的副本上。 -
将其分配给另一个标识符不会复制。
-
我不确定我是否理解。
标签: javascript reactjs react-hooks