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

How to update nested object property in Redux + React?

因此,首先,通过 SET_USER 设置具有一些属性(namecolorage)的 user 对象,然后我想通过 UPDATE_USER_NAME 更新 user 对象内的 name 属性,但是当我使用下面的代码和 [=19= 中的嵌套循环执行此操作时], name 属性 没有更新。

我做错了什么?如果我执行类似 user: {action.name, ...state.user} 的操作,对象 user 会更新并工作,但这只会从 action.name 创建另一个新的 属性 而不是更新当前的 nameuser 对象中。

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
  }
}

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

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

这会将 user 设置为当前 state.user,然后覆盖 name。传播方式类似于 Object.assign(从左到右)。这是因为在对象文字中分配相同的键将是 "last one wins".