Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/22.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 native中更新对象的状态-我没有使用redux_Javascript_Reactjs_Object_React Native_Setstate - Fatal编程技术网

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
的回调来保证正确的状态更改。让我们来看看。