Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/452.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/24.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中设置记录内的键的状态_Javascript_Reactjs - Fatal编程技术网

Javascript 如何在react中设置记录内的键的状态

Javascript 如何在react中设置记录内的键的状态,javascript,reactjs,Javascript,Reactjs,当我尝试这样做时,我遇到了麻烦,我想设置状态以在记录中输入密钥 示例: constructor(props){ super(props); this.state = { data:{"firstName":"XXXXX",lastName:"YYYYY",Rank:1} } } 我在初始状态下声明了这一点,在这里我只想更改特定的键,比如秩,因为我这样写: this.Setstate({data.Rank:2}) 它给出了一个错误 任何人给我建议如何解决它,任

当我尝试这样做时,我遇到了麻烦,我想设置状态以在记录中输入密钥 示例:

constructor(props){
    super(props);
    this.state = {
      data:{"firstName":"XXXXX",lastName:"YYYYY",Rank:1}
    }
}
我在初始状态下声明了这一点,在这里我只想更改特定的键,比如秩,因为我这样写:

this.Setstate({data.Rank:2})

它给出了一个错误
任何人给我建议如何解决它,任何帮助都非常感谢

请仔细阅读此答案

您必须将
this.state
扩展为
newState
,在
newState
中进行更改,然后
setState(newState)


您可以对
newState
进行任意类型和任意数量的修改,然后使用
setState()
,而不必怀疑您正在执行的操作。

您正在将状态设置为不正确

如果您有一个组件:

React.createClass({
  getInitialState: function(){
    return {
      data: {"firstName":"XXXXX",lastName:"YYYYY",Rank:1}
    };
  }
});
您需要执行以下操作:

var data = this.state.data;
data.Rank = 2;

this.setState({
  data: data
});

怎么了
this.Setstate
应该是
this.Setstate
Raspberry提到的意外标记({data.Rank:2}),请检查您是否在
getInitialState
中设置了
data
,是的,我仅将其声明为初始状态。请在问题中发布您的
getInitialState
方法,以便更好地参考。他想对
this.state.data.Rank
进行更改。上面的答案对
this.state.rank
进行了更改。如果初始
状态
的格式为
返回{'data':data},请修改.yah我想更改特定的键
,然后
这个.setState({data.Rank:2})
应该可以工作。上面的格式怎么样?我在constructorsi.e中声明了它,我需要声明一个虚拟记录,并将该记录设置为初始分配的记录?是的。这是最安全的方法,您可以继续修改您的虚拟对象,而不必担心
这一点。state
不变性。除此之外,还有其他方法吗?
var data = this.state.data;
data.Rank = 2;

this.setState({
  data: data
});