如何更新Redux + React中的嵌套对象属性?

2 javascript reactjs react-native redux react-redux

所以,第一,user有一些属性(对象name,color,age)获得通过建立SET_USER,我想更新的name内部属性user通过对象UPDATE_USER_NAME,但是当我用下面的代码楼下做与嵌套循环中UPDATE_USER_NAME,在name财产没有得到更新.

我究竟做错了什么?如果我做类似的事情user: {action.name, ...state.user},对象user会更新并运行,但这只会创建另一个新属性,action.name而不是更新对象name内部的当前内容user.

const DEFAULT_STATE = {
  user: {},
}

export default function(state = DEFAULT_STATE, action) {\
  switch(action.type) {
    case actionTypes.SET_USER:
      return {
        ...state,
        user: action.user,
      }

    case actionTypes.UPDATE_USER_NAME:
      return {
        ...state,
        user: {
          name: action.name,
          ...state.user,
        }
      }

    default:
      return state
  }
}
Run Code Online (Sandbox Code Playgroud)

Dav*_*yon 5

你只需要稍微改变点差的顺序:

case actionTypes.UPDATE_USER_NAME:
      return {
        ...state,
        user: {
          ...state.user,
          name: action.name,
        }
      }
Run Code Online (Sandbox Code Playgroud)

这将设置user为当前state.user然后覆盖name.传播就像Object.assign(从左到右).这是因为在对象文字中分配相同的键将是"最后一次获胜".