原始代碼:
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方法是一樣的拷貝方式。
作者:py曉楓
鏈接:https://www.jianshu.com/p/67b40993672f
來源:簡書
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。