2017-04-13 20 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)} 
相關問題