【发布时间】:2016-07-06 11:02:43
【问题描述】:
在这里使用 React 和 Redux:
我的State 看起来与此类似:
State : {
First : {
prop1 : "a",
prop2 : "b"
},
...
Last : {
prop1 : "c",
prop2 : "d"
}
}
我的Reducer 函数如下所示:
const tabsState = ( state = initialTabState, action ) => {
switch( action.type ) {
case( ENABLE_TAB ):
return (
Object.assign( {}, state, action.payload )
);
default:
return state;
}
};
对于action.payload,我只想发送包含prop1 新值的数据。我对Object.assign的理解是sources参数只是更新props,不会覆盖state中的对象,对吗?
在上面,我的action.payload是这样的:
First : {
prop1 : "z"
},
Second : {
prop2 : "x"
},
...
它似乎覆盖了 State 对象中的 First 和后续对象。也就是说Reducer返回的新State没有每个对象的第二个prop。 prop2s
【问题讨论】:
-
如果您对深度更新状态有疑问,请考虑将您的数据结构更改为其他内容。例如,请参阅this answer。此外,您可以拆分您的减速器并为
First、Second等创建特殊的减速器。
标签: javascript object reactjs redux