Reactjs Redux存储更新问题

Reactjs Redux存储更新问题,reactjs,redux,Reactjs,Redux,使用redux store更新对象时遇到问题,当我更新对象时,它会删除其他参数 在下面的示例中,更新参数对象时,id和title参数将被删除 const initialState = { users: { 'user-0': { id: 'user-0', title: 'John', parametersObject: null }, .... } ... ReducerR

使用redux store更新对象时遇到问题,当我更新对象时,它会删除其他参数

在下面的示例中,更新参数对象时,idtitle参数将被删除

const initialState = {
    users: {
        'user-0': {
            id: 'user-0',
            title: 'John',
            parametersObject: null
        },
    ....
}

...
ReducerRegistry.register('features/base/users', (state = initialState, action) => {
switch (action.type) {
case UPDATE_PARAMETERS_OBJECT:
        return {
            ...state,
            users: {
                ...state.users,
                [action.id]: {
                    ...state.users[action.id],
                    parametersObject: action.parametersObject
                }
            }
        };
    ....
}
我错过什么了吗?
我正在使用react 16.9和redux 4.0.4

您应该检查这部分[action.id]:{…state.users[action.id]


使用控制台检查您得到的值。

老实说,我不知道代码出了什么问题。我会尝试以下方法作为我的最佳尝试:

import _ from 'lodash'

case UPDATE_PARAMETERS_OBJECT:
        const tempState = _.cloneDeep(state)
        tempState.users[action.id] = {...tempState.users[action.id], parametersObject: action.parametersObject}
        return tempState

代码的这一部分似乎是正确的。您能否对代码做更多的说明,特别是如何将状态传递给运行switch语句的函数?可能太明显了。但是:“)id
id
?它只是id(
12
)还是您需要的键(
user-12
)?如果是前者,您需要[
user>-${action.id}
]:…在状态中设置用户数据。-sinan我更新了代码-wrdevos,它是'user'12',我使用这种状态来运行react-beatiful-dnd1)。在
UPDATE_PARAMETERS_OBJECT
块中添加console.log或调试器,并检查
action.id
是什么,以及
状态是什么。用户[action.id]
return.2)。我建议使用redux toolkit来简化还原程序的开发。另外,尝试将{…state.users[action.id],parametersObject:action.parametersObject}保存在单独的常量中,并检查它