【发布时间】:2020-11-28 14:46:18
【问题描述】:
在下面的方法中,对象o 被附加到对象列表qs 中。注释的部分不起作用,现在未注释的部分起作用。注释部分有什么问题?
onCreate(o) {
// This works (using lodash)
this.setState({ qs: _.concat(this.state.qs, { id: this.getNextID(), ...o }) });
// Is this not the same like the above?
// let newQuestionnaire = {id: this.getNextID(), title: o.title, description: o.description};
// let questionnaires = this.state.qs.push(newQuestionnaire);
// this.setState({
// qs: questionnaires,
// });
}
编辑:也许它对某人有帮助:Google 上出现的第一件事是 push:
--> 不要那样做。
【问题讨论】:
-
不要使用
.push()来修改状态。它不纯。只能通过纯操作修改状态。最重要的是,.push()返回修改后数组的 length,而不是数组。如果你想在没有 lodash 的情况下这样做,你可以这样做let questionnaires = this.state.qs.concat(newQuestionnaire); -
我不知道 lodash,但是像你那样修改状态是犯罪行为(通过推送)。您应该首先像这样复制状态(这里我浅复制它):let questions = [...this.state.qs];然后是问卷调查.push(newQuestionnaire);最后 this.setState...
标签: javascript reactjs lodash