原始代码:
const reducers = (state=defaultState, action) => {
switch(action.type) {
case 'change':
return Object.assign({}, state, {navList: action.navList});
default:
return state;
}
}
- 数据更新正常。但是页面没有刷新。
正常运行代码
const reducers = (state=defaultState, action) => {
switch(action.type) {
case 'change':
return Object.assign({}, state, {navList: [...action.navList]});
default:
return state;
}
}
- 一眼就能区分哪里不同。其实这个原因在于Object.assign()函数。
我一直以为它是深拷贝。其实他只深拷贝一层。子对象的是浅拷贝。
使用[...object1, ...object2]也是和assign方法是一样的拷贝方式。