【问题标题】:using the spread operator in react setState on array of objects在对象数组的反应 setState 中使用扩展运算符
【发布时间】:2018-10-04 08:27:16
【问题描述】:

我有一个对象数组(语言代码和名称),我试图将它们传播到反应组件中本地状态的另一个数组中。我试图传播的数组的结构是这样的:

let langs = [
  {code: "af", name: "Afrikaans"},
  {code: "sq", name: "Albanian"}
]

我正在尝试这样的事情:

this.setState({
  languages: [...langs]
}, 
  console.log(this.state.languages);
);

当我尝试在 setState 的回调中使用 console.log 语言时,数组为空。这里做错了什么?

【问题讨论】:

  • setState 是一个异步操作。在setState callback 或render() 中使用console.log();

标签: javascript reactjs setstate


【解决方案1】:

setState是异步的,需要在回调中调用函数。

this.setState({
  languages: [...langs]
}, () => console.log(this.state.languages)
);

【讨论】:

  • Ahhhhh 我现在感觉好傻,感谢 Stanley 和 Jamiec!
【解决方案2】:

第二个参数是一个回调 - 您正在立即执行 console.log 并将其结果作为回调传递。将您的代码更改为:

this.setState({
    languages: [...langs]
  }, 
  () => console.log(this.state.languages);
);

【讨论】:

    猜你喜欢
    • 2020-10-04
    • 2017-03-17
    • 2021-01-15
    • 2019-08-10
    • 2019-09-29
    • 2022-12-10
    • 1970-01-01
    • 2020-06-22
    • 1970-01-01
    相关资源
    最近更新 更多