Javascript 在react native中更新对象的状态-我没有使用redux
我有一个像这样的构造函数Javascript 在react native中更新对象的状态-我没有使用redux,javascript,reactjs,object,react-native,setstate,Javascript,Reactjs,Object,React Native,Setstate,我有一个像这样的构造函数 constructor() { this.state = { item_details : {} } } someFunc(next_item_key,next_item_value) { //append this next_item_key , next_item_value pair to item_detials } 我需要将someFunc中的下一
constructor() {
this.state = {
item_details : {}
}
}
someFunc(next_item_key,next_item_value) {
//append this next_item_key , next_item_value pair to item_detials
}
我需要将someFunc中的下一个\u项添加到我的状态变量item\u details
例如:
我的项目详细信息将如下所示
item_details : {'abc' : 'xyz' , 'a12' : '123' }
我的下一个项目是
next_item_key = 'qwerty'
next_item_value = 'pqrs'
我的结果项\u详细信息应如下所示
item_details : {'abc' : 'xyz' , 'a12' : '123' , 'qwerty' : 'pqrs' }
要获得此结果,我应该在someFunc中写些什么您可以使用spread运算符保持以前的状态:
this.setState(prevState => ({ item_details:
{
...prevState.item_details,
[next_item_key]: next_item_value
}
}));
使用和实现这一点
这样写:
someFunc(next_item_key, next_item_value) {
this.setState(prevState => ({item_details: {
...prevState.item_details,
[next_item_key]: next_item_value}
}))
}
更新:
在循环中调用setState不是一个好主意,更好的方法是首先进行所有计算,然后在on shot中更新状态值
像这样:
let data = {};
response.result.variants.forEach((element) => {
data[element.title]: false;
});
this.setState(prevState => ({in_wishlist: { ...prevState.in_wishlist, ...data }}))
应符合您的需要:
const newState=Object.assign(this.state.item\u details,{[next\u item\u key]:next\u item\u value})
或使用扩展运算符:
const newState={…this.state.itemDetails,[next\u item\u key]:next\u item\u value}
最好使用带有prevState
的回调来保证正确的状态更改。让我们来看看。