我有一个对象数组(语言代码和名称),我试图在反应组件中传播到本地状态的另一个数组。我试图传播的数组结构如下:
let langs = [
{code: "af", name: "Afrikaans"},
{code: "sq", name: "Albanian"}
]
我正在尝试这样的事情:
this.setState({
languages: [...langs]
},
console.log(this.state.languages);
);
当我在setState的回调中尝试console.log语言时,数组为空。这里有什么问题?
答案 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)
);