如何让我的reducer更新状态中的对象的一个​​属性?

时间:2018-07-17 01:37:15

标签: javascript reactjs redux react-redux

例如,在道具中,我有一个名为“用户”的对象,该对象设置为:

GetStringAsync

我想让UPDATE_USER_ENTRIES操作仅向用户分配更新。使用有效负载进行输入

我目前的减速器功能是这样的:

user = { id: 1, 
         name: jim, 
         email: jim@gmail.com, 
         entries: 4,
         joined: 07-16-2018
       }

为了返回仅更新了条目属性的新用户对象,编写返回的正确方法是什么?谢谢!

1 个答案:

答案 0 :(得分:1)

您可以像这样使用散布运算符:

如果您的状态是:

state = {
     foo: "bar",
     user: {
         id: 1, 
         name: "jim", 
         email: "jim@gmail.com", 
         entries: 4,
         joined: "07-16-2018",
    }
}

下面的代码,传播状态,不要触摸foo,传播状态的user,更新entries属性。

case UPDATE_USER_ENTRIES:
    return {...state, user: {...state.user, entries: action.payload } };

如果您的状态如下:

user: {
         id: 1, 
         name: "jim", 
         email: "jim@gmail.com", 
         entries: 4,
         joined: "07-16-2018",
    }

以上代码散布了仅user的状态,然后更新了entries属性。

case UPDATE_USER_ENTRIES:
    return {...state, entries: action.payload };

您的有效负载仅持有一个值:userEntries,因此它仅等于userEntries。因此,在减速器中,您需要根据以下条件使用它:action.payload您的有效负载不是持有userEntries值的对象。