Lê *_*Bảo 4 javascript ecmascript-6 reactjs mutate
我想知道是否做错了什么,因为据我所知:Object.assign和spread运算符将创建新对象,因此我们可以避免使用内部状态进行突变是一种不好的做法。但是在我的项目中,这两个似乎不起作用。
首先,在我的构造函数中,将状态设置如下:
this.state = {
article: {
title: "",
alias: "",
category: "JAVA",
steps: [
{
stepId: 1,
title: "Dummy title",
description: "The quick brown fox jump over the lazy dog",
length: 30
}
]
},
description: "",
newStep: {
title: "",
length: 0
}
}
Run Code Online (Sandbox Code Playgroud)
稍后,我添加一个addStep()函数:
addStep() {
console.log(this.state.article.steps);
let article = { ...this.state.article };
article.steps.push({
stepId: _.last(this.state.article.steps).stepId + 1,
title: this.state.newStep.title,
length: this.state.newStep.length,
description: "",
});
console.log(this.state.article.steps);
}
Run Code Online (Sandbox Code Playgroud)
如您所见,this.state.article.steps已被更改。Object.assign也是如此。最终我决定使用,这解决了我的问题。
let article = JSON.parse(JSON.stringify(this.state.article));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1478 次 |
| 最近记录: |