javascript - redux中同一个Reducer如何创建两个独立的state
黄舟
黄舟 2017-04-11 10:42:43
[JavaScript讨论组]

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

黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

全部回复(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比较是否相等知道是哪个。

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

PHP中文网

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
    }
}
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号