在对象数组上使用反应setState中的spread运算符

时间:2018-04-24 07:15:54

标签: javascript reactjs setstate

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

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

我正在尝试这样的事情:

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

当我在setState的回调中尝试console.log语言时,数组为空。这里有什么问题?

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:2)

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

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