2017-03-11 8 views
0

にこれは、私は私は何をしようとしていますが場所の目標値を更新するための関数を呼び出している更新配列はReactJS

this.state = { 
      check: 0, 
      places: ["0","0","0","0","0","0","0","0"], 
    } 
    } 

変数の状態に持っているものです。 例えば、私はこのようなchangeValue機能を使用しています:

changeValue= (event) => { 

     this.setState({ 
      places[2]: "1", 
     }); 
    } 

そして、それは働いていません。私は完全に更新された配列を渡すことができますが、私は現在の状態の他の値が必要です。ここで

+0

をお試しください:http://stackoverflow.com/questions/29537299/react-how-do-i-update-state-item1 -on-setstate-with-jsfiddle –

答えて

1

を使用すると、現在の場所配列の残りの部分を取得(そしてあなたがSETSTATE外の状態を変化させません確実にするために、それをコピーする)方法は次のとおりです。

changeValue = (event) => { 
    const places = this.state.places.slice(); 
    places[2] = '1'; 
    this.setState({ places }); 
} 
0

は、あなたのコンストラクタに次の行を追加します。ここでは、他の答えに加えて

this.changeValue = this.changeValue.bind(this); 

、あなたは子供からのコールバックを経由してイベントを処理しようとしている場合は特に、それを動作させるために、コンストラクタ内の関数をバインドすることも必要があります。

0

setStateオブジェクトを状態キーとしてkeyを引数として取ります。状態を更新するために正しいキーを渡すことを確認してください。

この答えは助けるべきである。この--->

changeValue= (event) => { 
     this.setState({ 
      places: places.map((item, index) => { 
          if(index == 2) return 1; 
          return item; 
        }); 
     }); }