redux中同一个Reducer如何创建两个独立的state

有个项目里有两个模块数据结构一样,所以我想通过一个reducer管理两个state,可是action执行时要如何分辨是要操作哪个state,要如何写?

阅读 4.5k
5 个回答

你试试更改type类型

const initialState={
    model:data1,
    detail:data1
}
export funtion reducer(state= initialState,action){
    switch(action.type) {
        case 'CHANGE':
        return Object.assign({},state,{model:你的action做的更改})
        case 'MOVE':
        return Object.assign({},state,{detail:你的action做的更改})
        default:
        return false
    }
}

至于要做什么操作看你自己了

既然是两个state,他们在store里的位置必然不一样,所以你可以通过传入的state和store.getState().xxxx比较是否相等知道是哪个。

但怎么说这听上去都不像一个好设计。

redux里边为什么会有两个state,我记得什么地方写过,整个应用维护成一个树形state。根据不同的动作触发action,调用reducer来创建新的state。说能同时维护两个state的,你们是怎想的?

既然两个模块用到的数据结构和操作方法是一模一样的,那么就写一个通用的reducer就行, 由它做处理。两个模块只需要拿到相应的数据和操作,通过容器组件connect,mapStateToProps, mapDispatchToProps做通信

不好意思,改一下大神的代码。

const initialState={
    model:data1,
    detail:data1
}
export funtion reducer(state= initialState, action) {
    switch(action.type) {
        case 'CHANGE':
            return {
                ...state.model,
                model: action.model
            }
        case 'MOVE':
            return {
                ...state.detail,
               detail: action.detail
            }
        default:
            return state
    }
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题