2017-04-13 19 views
0

CTR在函数总是不确定<reactjs>

<script type="text/jsx"> 
    var Counter = React.createClass({ 
     ChangeValue: function(ctr){ 
     alert(this.state.arr[ctr]); 
     this.setState({ 
      arr : this.state.arr[5] 
     }); 
     }, 
     getInitialState: function(){ 
     return { 
      arr:[ 
      '0','0','0', 
      '0','0','0', 
      '0','0','0' 
      ], 

      arr2:[ 
      0,0,0, 
      0,0,0, 
      0,0,0] 
     } 
     }, 
     render: function(){ 
     var sese = []; 
     var ctr = 0; 
     sese.push(<h1>Count: {this.state.arr}</h1>) 
     for(var i = 0; i < 3 ; i++) 
     { 
      for(var j = 0 ; j< 3 ; j++) 
      { 
       sese.push(<button type="button" key={ctr} id={ctr} onClick={this.ChangeValue.bind(null, this.ctr)}>{this.state.arr2[ctr]}</button>) 
       ctr = ctr + 1; 
      } 

      sese.push(<br/>) 
     } 
     return (

      <div>{sese}</div> 

     ); 
     } 
    }); 

    ReactDOM.render(
     <Counter/>, 
     document.getElementById('root') 
    ); 
</script> 

我想这

var Counter = React.createClass({ 
     ChangeValue: function(ctr){ 
     alert(this.state.arr[this.ctr]); 
     this.setState({ 
      arr : this.state.arr[5] 
     }); 
     }, 

,仍然不确定.. 我学反应,得到stucked与我处于警戒CTR ,并不知道解决方案.. 我试图改变我的按钮的价值。如果我点击按钮,该值将变为1,但我的ctr始终未定义。有谁知道为什么我的警报总是未定义?

+0

我并不完全清楚你在这里要做什么,但是如果你通过'ctr',那么我认为你不需要'this' - 换句话说,它应该是'this .state.arr [CTR]'。如果你使用console.log(this.state)'',你会得到什么? – Toby

回答

0

在您的onClick中,您必须通过ctr而不是this.ctr,因为它不存在。

onClick={this.ChangeValue.bind(null, ctr)} 
相关问题