Thi*_*Sun 9 javascript reactjs redux
在减速器中,我们总是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;
}
}Run Code Online (Sandbox Code Playgroud)
该属性menuList是一个多级对象.而当action.data改变时,会state.menuList在方法assign()工作之前立即改变吗?
pas*_*ion 10
您可以使用JSON.stringify对对象进行字符串化,并使用JSON.parse将结果字符串解析为对象,您将获得与要深度复制的对象相同的新对象.
当时的票数是多少?
您可能对cloneDeep形式lodash 感兴趣,用法如下:
var objects = [{ 'a': 1 }, { 'b': 2 }];
var deep = _.cloneDeep(objects);
console.log(deep[0] === objects[0]);
// => false
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11864 次 |
| 最近记录: |