在reducers中,我们总是使用Object.assign({},state,newState)
来保存状态。但assign()
不支持deepcopy,因为此方法只复制多级对象的引用。这是我在程序中的代码。React中的深层拷贝
const menuListState={
\t menuList: {},
\t menuListLoading:false
}
function getMenuList(state=menuListState,action=defaultAction){
\t switch(action.type){
\t \t //menuList begin
\t \t case actions.GET_MENULIST_SUCCESS:
\t \t return Object.assign({},state,{
\t \t \t menuList:action.data,
\t \t \t menuListLoading:false
\t \t });
\t \t default:
\t \t \t return state;
\t }
}
属性menuList
是一个多级对象。当action.data
发生变化时,state.menuList
会在方法assign()
工作之前立即更改吗?
我听说,这其实是非常快,因为它本身 – user3413723
实施虽然答案是不是有些原生React过程,这个过程一直是像Angular JS 1类似的东西被接受的答案(由于性能和简洁)。 Upvoted –
小心使用此方法双向转移日期的问题。 –