Javascript 更新处于react js状态的json数组
我有一个多选下拉列表。每当我选择一个选项时,我都需要将该数据添加到状态。 当我单击第一个选项时,我得到如下数据Javascript 更新处于react js状态的json数组,javascript,reactjs,Javascript,Reactjs,我有一个多选下拉列表。每当我选择一个选项时,我都需要将该数据添加到状态。 当我单击第一个选项时,我得到如下数据 [{id:"1", name:"Ind"}] 当我单击第二个选项时,我会得到如下数据(当前选择了两个选项) 在multiselect的onChange中,我调用以下函数 handleChange = (options) => { var output = []; if(options !== null && options !== undefin
[{id:"1", name:"Ind"}]
当我单击第二个选项时,我会得到如下数据(当前选择了两个选项)
在multiselect的onChange中,我调用以下函数
handleChange = (options) => {
var output = [];
if(options !== null && options !== undefined){
console.log(options); // [{id:"1", name:"Ind"}, {id:"2", name:"Aus"}]
this.setState(prevState => {
selectedCountries:options
});
}
};
它不起作用
我期待着这样
selectedCountries:[
{
id:"1",
name:"Ind"
},
{
id:"2",
name:"Aus"
}
]
如何通过reactjs实现这一点?您的
setState
语法不正确
this.setState({
selectedCountries:options
});
只有当您需要基于先前的状态更新状态时,才需要使用更新程序函数,在这种情况下,您需要从更新程序函数返回一个您没有执行的对象
看起来像
const newlyAddedOption = {id:"3", name:"UK"}
this.setState(prevState => {
return { selectedCountries:[...prevState.selectedCountries, newlyAddedOption]}
});
或
但是,这目前对您没有用处,因为您可以同时获得所有选项。更改此.setState(prevState=>{selectedCountries:options});对于这个.setState({selectedCountries:options}),它不是一个对象数组。它是ok.array of objects。如果我选择3个选项,状态中只更新2个值。原因可能是什么?在设置状态后是否记录了这些。当我选择一个新选项时,你可能也想检查一下,我会得到所有选择的数据,比如[{id:“1”,name:“Ind”},{id:“2”,name:“Aus”}]你检查了我在上面的评论中链接的问题了吗
const newlyAddedOption = {id:"3", name:"UK"}
this.setState(prevState => {
return { selectedCountries:[...prevState.selectedCountries, newlyAddedOption]}
});
const newlyAddedOption = {id:"3", name:"UK"}
this.setState(prevState => ({
selectedCountries: [...prevState.selectedCountries, newlyAddedOption]
}));