Javascript 如何在Reactjs中使用变量改变状态

Javascript 如何在Reactjs中使用变量改变状态,javascript,reactjs,Javascript,Reactjs,我不熟悉Reactjs,在我的代码中进行实验时遇到了问题。我正在使用math.random查找0-9之间的值,并与valvar连接以获得多个变量。我想找到相应变量的状态 这是我的密码 getInitialState: function(){ return{valvar2:"",valvar3:"",valvar4:"",valvar5:"",valvar6:"",valvar7:"",valvar8:"",valvar9:""} }, handleClick: function()

我不熟悉
Reactjs
,在我的代码中进行实验时遇到了问题。我正在使用
math.random
查找
0-9
之间的值,并与
valvar
连接以获得多个变量。我想找到相应变量的状态

这是我的密码

 getInitialState: function(){
   return{valvar2:"",valvar3:"",valvar4:"",valvar5:"",valvar6:"",valvar7:"",valvar8:"",valvar9:""}
  },
 handleClick: function(){
  var createVar="";
  createVar ="valvar"+Math.floor((Math.random() * 9) + 1);
  if(this.state.createVar==""){
     this.setState({createVar:"HELLO"})
  }

但是这个代码不起作用,我不知道为什么。这只是一个示例,不是我的原始代码。

您的州没有定义
createVar
,它只是
handleClick
中的局部变量。所以这个条件:
this.state.createVar==”
永远不会满足,因为它是
未定义的。您必须在初始状态下定义
createVar

如果要将生成的值用作状态对象属性名称,请使用以下命令:

 handleClick: function(){
    var createVar="";
    createVar ="valvar"+Math.floor((Math.random() * 9) + 1);
    if(this.state[createVar] == ""){
        let newState = {};
        newState[createVar] = "HELLO"
        this.setState(newState)
    }
}
或者,如果您使用ES2015:

this.setState({
   [createVar]: "HELLO"
})
如果您正在使用并且不想直接改变状态(关于改变状态),最简单的方法是使用-将属性名称括在括号中,如
[variable]

const n = Math.floor((Math.random() * 3) + 1)
this.setState({
  ['valvar' + n]: 'hello'
})

您可以在这里看到示例:

直接更改状态是

在这种情况下,您可以创建一个对象并用它调用
setState

var modifyState = {};
modifyState[createVar] = "HELLO";

this.setState(modifyState);
或者更干净更干净


是的,我知道,例如,如果math.random生成“1”,则局部变量craetVar将是初始状态中定义的“valvar1”。请尝试此
this.state[createVar]==“”
this.setState({
  [createVar]: 'HELLO'
});