代码之家  ›  专栏  ›  技术社区  ›  ValRob

如何使用Redux从reducer中的状态修改子对象

  •  1
  • ValRob  · 技术社区  · 6 年前

    初始状态

    const initialState = {
      step : 1,
      user: {
        identification : {
          email:  '',
          username: '',
        },
        localization: {
          address:  '',
          country: '',
        }}
    

    我的有效载荷是这个物体:

    identification : {
        email: "some@html.com"
        username: "s032190" }
    

    还有我的 减根剂 这是:

    function rootReducer(state = initialState, action) {
      switch (action.type) {
        case ADD_USER:
          return { ...state, user: action.payload }  
        case CHANGE_STEP:
        return { ...state, step: action.payload }  
        case ADD_FIELD: 
          Object.keys(state.altaUsuario).forEach (cat => { 
              return { ...state.user, [cat] : action.payload}          
          })
        default:
        return state
      }
    };
    

           return { ...state, altaUsuario[cat] : action.payload}     
    

    但它给了我一个语法错误。

    有什么想法吗??

    0 回复  |  直到 6 年前
        1
  •  2
  •   Mohsin Amjad    6 年前

    你可以试试这样的

    return { ...state,user : {...state.user ,identification :action.payload }}

        2
  •  0
  •   Ashish Jhanwar    6 年前

    如果你的action.payload是

    {
      identification : {
      email: "some@html.com"
      username: "s032190"
       }
    }
    

    您必须重写标识属性

    return { ...state, user: { ...state.user, identification: action.payload.identification}