redux的reducer返回的state多嵌套了一层state

如图所示:我在这两个地方打印,没做任何处理,结果却完全不一样,这也导致了redux的状态树被无缘无故嵌套了一层

clipboard.png

阅读 3.7k
2 个回答

谢邀!
原因是您本身就多包装了一层{}!我这边大致写一个示例供您参考:

import { fromJS } from 'immutable';
import { LOADING } from '../Constants/DispatchTypes';

// 初始化state数据
const initialState = {
    loading: false
};

/**
 * 公共reducer
 * @return
 */
const Common = (state = initialState, action) => {
    switch(action.type) {
        case LOADING: // 用于页面和区块的加载中状态
            return fromJS(state).merge({loading: action.loading}).toJS();
        default:
            return state;
    }
}

export { Common };

不过我这边引入了数据处理库 immutable.js!您也可以直接使用Object.freeze 或 Object. assign。

default返回的。

就相当于:

return {state: state}

不是就多了一层么

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题