Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/411.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在对象数组上的react setState中使用spread运算符_Javascript_Reactjs_Setstate - Fatal编程技术网

Javascript 在对象数组上的react setState中使用spread运算符

Javascript 在对象数组上的react setState中使用spread运算符,javascript,reactjs,setstate,Javascript,Reactjs,Setstate,我有一个对象数组(语言代码和名称),我正试图将其扩展到react组件中本地状态的另一个数组中。我试图传播的阵列结构如下所示: let langs = [ {code: "af", name: "Afrikaans"}, {code: "sq", name: "Albanian"} ] this.setState({ languages: [...langs] }, console.log(this.state.languages); ); 我正在尝试这样的事情: let l

我有一个对象数组(语言代码和名称),我正试图将其扩展到react组件中本地状态的另一个数组中。我试图传播的阵列结构如下所示:

let langs = [
  {code: "af", name: "Afrikaans"},
  {code: "sq", name: "Albanian"}
]
this.setState({
  languages: [...langs]
}, 
  console.log(this.state.languages);
);
我正在尝试这样的事情:

let langs = [
  {code: "af", name: "Afrikaans"},
  {code: "sq", name: "Albanian"}
]
this.setState({
  languages: [...langs]
}, 
  console.log(this.state.languages);
);

当我尝试从setState回调console.log语言时,数组为空。我做错了什么

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

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

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

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

setState是一个异步操作。在中使用console.log(),或在render()中使用;啊,我现在觉得自己太傻了,谢谢斯坦利和杰米克!