如何正确地将 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 设置为对象数组? [复制]的主要内容,如果未能解决你的问题,请参考以下文章