2016-11-10 16 views
0

アウトでの変化を検出する。この例での問題:あなたはボタンを押すとReactJS - 状態

{ 
    foo: 123, 
    bar: [{ 
    cux: 456 
    }] 
} 

が、それは新しいが追加されています。小さなリアクトアプリケーションがありますhttp://codepen.io/lzhelenin/pen/jVbeRg

、それは初期状態だが、そのように見えますオブジェクトをstate.barに置き換えてstate.foo値を変更します。しかし、それを押してコンソールを見ると、前の状態のstate.barは、state.fooが異なっていても、新しい状態のstate.barとまったく同じであることがわかります。それはなぜ起こるのですか? http://underscorejs.org/#cloneから

答えて

1

_.cloneは、両方ともが同じ配列を参照浅いコピークローン、そうprevcurr状態の両方を作成します。

clickHandler() { 
    this.setState({ 
     foo: 999, 
     bar: [ 
     ...this.state.bar, 
     {cux: 123} 
     ] 
    }); 
    } 
1

clone_.clone(オブジェクト)が設け 無地オブジェクトの浅いコピークローンを作成します。入れ子にされたオブジェクトまたは配列は複製されずに 参照によってコピーされます。

したがって、新しい値を入力しているprevState.barとは、両方とも同じ配列への参照です。あなたは、より良い、このようになり、あなたのclickHandler()方法を調整するように、@放射性は、前述のように

関連する問題