扫码关注官方订阅号
有个项目里有两个模块数据结构一样,所以我想通过一个reducer管理两个state,可是action执行时要如何分辨是要操作哪个state,要如何写?
人生最曼妙的风景,竟是内心的淡定与从容!
你试试更改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 } }
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
你试试更改type类型
至于要做什么操作看你自己了
既然是两个state,他们在store里的位置必然不一样,所以你可以通过传入的state和store.getState().xxxx比较是否相等知道是哪个。
但怎么说这听上去都不像一个好设计。
redux里边为什么会有两个state,我记得什么地方写过,整个应用维护成一个树形state。根据不同的动作触发action,调用reducer来创建新的state。说能同时维护两个state的,你们是怎想的?
既然两个模块用到的数据结构和操作方法是一模一样的,那么就写一个通用的reducer就行, 由它做处理。两个模块只需要拿到相应的数据和操作,通过容器组件connect,mapStateToProps, mapDispatchToProps做通信
不好意思,改一下大神的代码。