2016-09-12 28 views
0

在我的reducer中,我無法瞭解爲什麼我的狀態返回更新但未複製。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 

} 

當然這是我缺少的是什麼簡單的事情,但我想不出它

+0

爲什麼你覺得你需要用'JSON.parse(JSON.stringify(州))'克隆? –

回答

0

看起來好像你是完全重新分配這一行newstate

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

嗨達文,我按照你的建議,但我已經收到了這個錯誤:aught錯誤:找不到模塊「./src/reducers/loginReducer」 –

+0

你有沒有對象在你的babel配置傳播?我將編輯另一種方法來實現相同的目的。 –

+0

我已經安裝了babel-preset-stage-2,但是目前我遇到了同樣的問題 –