this.setState使变量未定义?

Eug*_*nic 3 javascript setstate reactjs

我正在尝试增加我的状态变量,但每当我这样做时会弹出一个错误,表示变量状态是未定义的.我在构造函数中定义了我的变量.显然,setState函数正在发生一些事情.

以下是呈现错误的代码:

displayDiv(){
  var arr=[];
  if (this.state.flag[2]){
    this.setState({counter:counter+4}); // error:undefined
    for (let i = this.state.counter-4; i < this.state.counter; i++)
      arr.push(this.state.arrayHeader[0].content);
    }
  }
 return(
   arr.map(function(item,i){
     return (
       <div className="bodydiv col-sm-3">
         <Header/>
         <Content/>
         <Tags/>
       </div>
     );

    })
  );
}
Run Code Online (Sandbox Code Playgroud)

这是构造函数中定义的变量:

constructor(props){
  super(props);

  this.state = {
    arrayHeader:[],
    arraytag1:[],
    arraytag2:[],
    counter:0,
    flag:[false,false,false]
  }
}
Run Code Online (Sandbox Code Playgroud)

zur*_*fyx 8

你的counter +4点无处可去.

它应该是 this.state.counter + 4

此外,如果您正在调用此函数,请render()确保它之前已绑定,您可以在构造函数上执行以下操作:

this.displayDiv = this.displayDiv.bind(this);
Run Code Online (Sandbox Code Playgroud)

  • @eugen_sunic那是因为`setState`更新了自己的存储值,因此不需要完整的引用`this.state`.但是,由于您没有更改"1"或"foo"之类的值,而是更改存储在其他位置的值,因此需要将该值的完整引用传递给该值(在本例中为"this.state.counter"). (2认同)