首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在不调用setState的情况下更新React挂钩状态

在不调用setState的情况下更新React挂钩状态
EN

Stack Overflow用户
提问于 2021-09-28 17:58:25
回答 2查看 41关注 0票数 1

我遇到了React的问题,在没有调用setState的情况下,钩子状态正在更新。

代码语言:javascript
运行
复制
  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函数才是问题所在。

我仍然不明白,如果不调用钩子setDataSet2,我的dataSet2是如何被修改的

EN

Stack Overflow用户

回答已采纳

发布于 2021-09-28 18:11:23

如果你想复制一个数组或者一个对象,你需要这样做。listTwo = [...listOne]ObjectTwo = {...ObjectOne}。只使用=而不使用扩展操作符并不会为您创建该数组或对象的副本,而是为您提供对同一数组或对象的另一个引用。

票数 3
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69366440

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档