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