Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/23.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 将本机字符串变量作为状态键进行反应_Javascript_Reactjs_React Native - Fatal编程技术网

Javascript 将本机字符串变量作为状态键进行反应

Javascript 将本机字符串变量作为状态键进行反应,javascript,reactjs,react-native,Javascript,Reactjs,React Native,我有这样一个状态组件- this.state = { data: {machine_mode:'', machine_status:'', total_cycles: 0, current_cycle: 0} }; recKey = 'machine_mode'; recVal = 'Auto'; this.setState({data:{...this.state.data, [recKey]: recVal}}); 我还有这样的字符串变量- this.sta

我有这样一个状态组件-

this.state = {
        data: {machine_mode:'', machine_status:'', total_cycles: 0, current_cycle: 0}
      };
recKey = 'machine_mode';
recVal = 'Auto';
this.setState({data:{...this.state.data, [recKey]: recVal}});
我还有这样的字符串变量-

this.state = {
        data: {machine_mode:'', machine_status:'', total_cycles: 0, current_cycle: 0}
      };
recKey = 'machine_mode';
recVal = 'Auto';
this.setState({data:{...this.state.data, [recKey]: recVal}});
现在我想用key作为recKey更新state。我试过这样的东西-

this.state = {
        data: {machine_mode:'', machine_status:'', total_cycles: 0, current_cycle: 0}
      };
recKey = 'machine_mode';
recVal = 'Auto';
this.setState({data:{...this.state.data, [recKey]: recVal}});
它无法更新状态

如果我写得像-

this.setState({data:{...this.state.data, machine_mode: recVal}});
我得到了预期的结果。这意味着变量中的值可以正常工作,但如果变量中有键,则无法更新


请帮我处理这个问题。

好的,它应该会起作用。你确定你检查的方法正确吗?添加一些
console.log
调用以查看更新前后的数据是什么。此代码执行前后的状态是什么?您得到的是什么错误?我没有得到任何错误,但状态保持相同的值,例如,即使在状态更新后,机器模式仍然保持“”。我使用console.log检查-console.log('data:',this.state.data.machine_模式);它应该按预期工作,状态更新是异步的,所以请尝试这样记录<代码>const recKey='machine_mode';const recVal='Auto';console.log('prev state',this.state.data)this.setState({data:{…this.state.data,[recKey]:recVal}},()=>{console.log('After update',this.state.data)})