原始代码:

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
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2023-03-24
  • 2022-12-23
  • 2023-01-31
  • 2022-12-23
  • 2022-01-11
猜你喜欢
  • 2021-06-06
  • 2022-01-09
  • 2020-10-12
  • 2021-08-03
  • 2021-12-18
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案