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)})代码>