如何正确地将 setState 设置为对象数组? [复制]

Posted

技术标签:

【中文标题】如何正确地将 setState 设置为对象数组? [复制]【英文标题】:How to properly setState to array of objects? [duplicate] 【发布时间】:2020-04-09 09:17:53 【问题描述】:

我有一个数组 ob 对象,它根据它们的数量创建 Close 按钮。当我单击Close 按钮时,我希望数组被更新(删除),然后按钮元素将从屏幕上消失。

我已经在console.log 进行了锻炼,但无法正确执行 setState :(

此处的示例代码:https://codesandbox.io/s/sharp-kilby-hn2d9

任何帮助将不胜感激,我相信这只是我需要正确执行它的 setState 的格式,但是因为它的对象数组等等我无法弄清楚。

【问题讨论】:

请将您的代码放在您的问题中,不要链接到外部网站。 或者如果你想add an item to the state。 Emile 我试过但失败了,我想我只是写错了 setState。 【参考方案1】:

这里是你重写的handleclick函数,你根据需要修改后忘记返回最后的状态:

  handleClick = i => 
    this.setState(state => 
      var newState = allProjects: [];
      for (let z = 0; z < state.allProjects.length; z++) 
        const element = state.allProjects[z].employees;
        const items = element.filter(item => item !== i);
        console.log('filter', items);
        console.log('===========');
        newState.allProjects[z] = Object.assign(, state.allProjects[z]);
        newState.allProjects[z].employees = items;
      
      return newState;
    );
  ;

【讨论】:

这会改变当前状态,这在 React 中是被禁止的。 你应该自己试试,去掉“return state;”最后并意识到它不会改变当前状态,否则它不需要返回语句来工作。还是我错了? state.allProjects[z].employees = items 改变您正在使用的 state 引用。 哦,确实,我更正了。 埃米尔,现在可以了吗?

以上是关于如何正确地将 setState 设置为对象数组? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何正确地将具有多个元素的新对象推送到数组中?

如何正确地将对象 $push 到 MongoDB 模式属性中,类型:数组

如何正确地将自定义按钮集转换为响应对象?

如何在我的 setState 函数调用中使用变量?

如何正确地将字符数组写入文本文件

React:在 setState 中设置数组对象