【问题标题】:What is wrong with my JavaScript append function?我的 JavaScript 附加函数有什么问题?
【发布时间】: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


【解决方案1】:

Array Push返回

调用该方法的对象的新长度属性

试试这个

let newQuestionnaire = {id: this.getNextID(), title: o.title, description: o.description};
this.setState({qs: [...this.state.qs, thisquestionnaires]})

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-14
    • 2017-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-11
    • 2015-09-30
    相关资源
    最近更新 更多