簡體   English   中英

如何在Redux + React中更新嵌套對象屬性?

[英]How to update nested object property in Redux + React?

所以第一, user有一些屬性(對象namecolorage )獲取通過建立SET_USER ,我想更新的name里面屬性user通過對象UPDATE_USER_NAME ,但是當我用下面的代碼做樓下嵌套循環在UPDATE_USER_NAMEname屬性不會更新。

我究竟做錯了什么? 如果我做類似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 (從左到右)。 這是因為在對象文字中分配相同的鍵將是“最后一個獲勝”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM