Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 为什么我的Redux状态是嵌套的?_Reactjs_Redux - Fatal编程技术网

Reactjs 为什么我的Redux状态是嵌套的?

Reactjs 为什么我的Redux状态是嵌套的?,reactjs,redux,Reactjs,Redux,我正在编写我的第一个更大的React/Redux/Meteor应用程序。我知道Meteor应用程序中不一定需要Redux,但我想使用它 我用Meteor从MongoDB加载了一条记录,然后我想把这个对象存储在我的Redux存储中。但是对象嵌套在存储中,我不知道为什么会出现这种情况 以下是我目前的代码: 操作加载远程记录 export const loadRecord = (id) => { return dispatch => { Meteor.call('l

我正在编写我的第一个更大的React/Redux/Meteor应用程序。我知道Meteor应用程序中不一定需要Redux,但我想使用它

我用Meteor从MongoDB加载了一条记录,然后我想把这个对象存储在我的Redux存储中。但是对象嵌套在存储中,我不知道为什么会出现这种情况

以下是我目前的代码:

操作加载远程记录

export const loadRecord = (id) => {
    return dispatch => {
        Meteor.call('loadRecord', id, (error, result) => {
             if (!error) {
                dispatch({
                    type: TYPE,
                    result
                });
            } else {
                dispatch({
                    type: TYPE_ERROR,
                    error,
                });
            }

        });
    };
};
我应该更新我的商店

const initialState = {
    singleRecord: {}
};

export function singleRecord(state = initialState, action) {    
    switch (action.type) {
        case TYPE:
            return {
                ...state,
                singleRecord: action.result
            };
        default:
        return state;
    }
}
在更多的商店里,我希望有这样的东西:

singleRecord: {
    id:"1223",
    text:"abcde"
}
但我得到的是:

因此,我的存储得到更新,一切都按预期进行,除了我的记录以某种方式嵌套之外。 我认为我错过了一件基本的事情,或者我实施错了。如果有人能向我解释这是否是预期的行为,或者如果不是,能告诉我为什么我的代码不能按预期工作,那将是非常好的


提前感谢

您要打开操作的有效负载:

return {
    ...state,
    ...action.result
};
或者,换句话说:

return Object.assign({}, state, action.result);
我不确定您还想在singleRecord中保存什么,但完全有可能您想这样做:

return action.result;
另外,您的初始状态应该是constinitialstate={}


singleRecord reducer返回的对象是存储到singleRecord状态的对象。

非常感谢。你的回答解决了我的问题。忘了拆开包装。还感谢不同的实现。
return action.result;