2016-09-12 25 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,但是目前我遇到了同样的问题 –