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

标签 javascript reactjs react-native redux react-redux

首先,设置具有一些属性(namecolorage)的user对象通过 SET_USER 更新,我想通过 UPDATE_USER_NAME 更新 user 对象中的 name 属性,但是当我使用下面的代码在 UPDATE_USER_NAME 中使用嵌套循环来执行此操作,name 属性不会更新。

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

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(从左到右)。这是因为在对象字面量中分配相同的键将是“最后一个获胜”。

关于javascript - 如何更新 Redux + React 中的嵌套对象属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39868783/

相关文章:

reactjs - 编译android时React-native-camera错误

javascript - Node js 中的动态异步等待

JavaScript 从数组中过滤数据

javascript - Reactjs控制台错误: 'Components object is deprectated' & 'ReferenceError: require is not defined'

javascript - 在firebase中注册之前检查电子邮件是否是真实的

javascript - 不使用工作区的 yarn nohoist

c# - 如何使我的 asp 日历弹出?

javascript - 更快的轮询频率会让我的页面陷入困境吗?

javascript - 在 React 中传递引用数组

javascript - React Native : Background image loads as the last component, 尽管它是先添加的