在减速器中,我们总是使用 Object.assign({},state,newState)
来保存状态。但是 assign()
不支持deepcopy,因为该方法只复制多级对象的引用。这是我在程序中的代码。
const menuListState={
menuList: {},
menuListLoading:false
}
function getMenuList(state=menuListState,action=defaultAction){
switch(action.type){
//menuList begin
case actions.GET_MENULIST_SUCCESS:
return Object.assign({},state,{
menuList:action.data,
menuListLoading:false
});
default:
return state;
}
}
属性 menuList
是一个多级对象。当 action.data
改变时, state.menuList
会在方法 assign()
工作之前立即改变吗?
原文由 ThiagoSun 发布,翻译遵循 CC BY-SA 4.0 许可协议
您可以使用
JSON.stringify
将对象字符串化,并使用JSON.parse
将结果字符串解析为对象,您将获得与要深度复制的对象相同的新对象。例子: