【发布时间】:2020-10-24 09:40:45
【问题描述】:
我正在构建一个 React 16.13 应用程序。我想从我的状态中复制一个属性,以便对其进行操作并使基础状态保持不变。我认为这是这样做的方法...
async handleFormSubmit(e) {
e.preventDefault();
const NC = [...this.state.newCoop]
delete NC.addresses[0].country;
try {
const response = await fetch(FormContainer.REACT_APP_PROXY + "/coops/", {
method: "POST",
body: JSON.stringify(this.state.newCoop),
headers: {
Accept: "application/json",
"Content-Type": "application/json",
},
});
不过这一行
const NC = [...this.state.newCoop]
给出错误
Unhandled Rejection (TypeError): this.state.newCoop is not iterable
按值复制状态变量的正确方法是什么?
【问题讨论】:
-
什么是
this.state.newCoop?您似乎以两种不同的方式处理它 - 当您复制它时作为一个数组,当您访问NC.addresses时作为一个对象。另请注意,[...thing]只是一个浅副本,因此delete NC.addresses[0].country也会改变原始副本。 -
"newCoop" 是我所在州的一个对象。我应该在我的问题中包含它的属性吗?我想通过值而不是引用来复制它,但还没有弄清楚如何做到这一点。
-
如果它是一个对象,为什么要将它传播到一个数组中?是的,请始终提供minimal reproducible example。
-
我试图按照这里的建议按值复制对象 -- stackoverflow.com/questions/51444827/… ,但这个解决方案显然不正确,或者不知何故不适用于我的情况。
-
他们正在复制一个 数组,根据欺骗标题,而你说你没有数组。
标签: reactjs copy react-state