2016-09-12 16 views
0

私の減速機では、私の状態が更新されたものの、コピーされなかった理由は分かりません。React-Redux:状態は更新されましたがコピーされません。

const loginReducer = (state = {}, action) => { 

    let newstate = JSON.parse(JSON.stringify(state)) 
    const { type, payload } = action 

    switch(type) { 
     case constant.LOGIN_SUCCESS: 
      // 
      newstate = { login: [{ user: payload.user, password: payload.password, logged: true }] } 
      console.log(newstate.login) 
      break; 
     default: 
      break; 
    } 

    return newstate 

} 

きっとあなたは完全にこの行のnewstateに再割り当てされているかのように見えます

+0

なぜあなたは 'JSON.parse(JSON.stringify(状態))'でクローンを作成する必要があると感じますか? –

答えて

0

それは私が欠けているものを、単純なことだが、私はそれを把握することはできません。

newstate = { login: [{ user: payload.user, password: payload.password, logged: true }] } 

あなたがstateに現在の値を維持したい場合にも、それらを含める必要があります。

newstate = { ...newstate, login: [{ user: payload.user, password: payload.password, logged: true }] } 

上記ではオブジェクトのスプレッドを使用していますが、これはあなたのバベル構成に含まれていてもいなくてもかまいません。あなたはまた同じことを達成するためにObject.assignを使用することができます。

newstate = Object.assign(newstate, { login: [{ user: payload.user, password: payload.password, logged: true }] }); 
+0

こんにちはDavin、私はあなたが示唆したようにしましたが、私はこのエラーを受け取りました:aught Error:モジュール "./src/reducers/loginReducer"を見つけることができません " –

+0

あなたのバベルの構成にオブジェクトが広がっていますか?私は同じことを達成する別の方法を編集します。 –

+0

私はbabel-preset-stage-2をインストールしましたが、現在同じ問題があります –

関連する問題