2017-03-24 27 views
1

私はReact/Reduxを学習しており、その状態に従っています。React/Redux - 新しい状態に配列の状態を設定します。

default_state = [ 
    { 
    id: 1, 
    name: "Smith" 
    }, 
    { 
    id: 2, 
    name: "Matt" 
    }, 
    { 
    id: 3, 
    name: "Tom" 

    } 
]; 

さて、私の減速で、私は配列の2番目のオブジェクトの名前を言って上書きする:オブジェクトは、JavaScriptのオブジェクトを含む配列です。どうすればいい?私はこのような何かを思い付いたが、間違っているようだ:

case "SAVE_CHANGES": 
     state = {...state, { id: 3, name: "Peter"}; 

は、だから私は、最初に正しいIDを持つオブジェクトを検索し、この名前をオブジェクト上書きします。今はIDと名前の両方を上書きしているだけで、明らかに動作しません。

私の以前のアイデアは、このでした:

state = {...state, state[2].name="Peter"}; 

しかし、これも動作しません。何かアドバイス?

答えて

0

あなただけの、私は構文エラーを取得し、あなたが

// clone the array 
const newState = [...state]; 
// clone the item 
newState[2] = {...newState[2], name: "Peter" }; 
+0

を変更したい項目を複製し、配列のクローンを作成する必要があります。また、 'const'を作成して上書きすることはできますか?これを 'let 'に変更しましたが、構文エラーが発生しました:'ファイルの解析中に予期しないトークン(56:22): –

+0

これはあなたがBabelで有効にした段階によって異なります。ステージ2を有効にすると、構文が機能します。私はconst変数を上書きしていません。私はそれが指しているオブジェクトに突然変異を起こしています。 – Brandon

関連する問題