react-redux 解决不重新渲染的问题

原始代码:

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

来源:简书

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。