Redux combineReducer返回未在操作中调用的reducer的默认状态

Redux combineReducer返回未在操作中调用的reducer的默认状态,redux,react-redux,Redux,React Redux,我对react redux是新手,所以我想我只是缺少一些基本的东西 我有三个缩减器,两个用于处理存储中作为数组更新的订单,另一个用于显示我用于接收服务器订单的web套接字连接的状态 //reducers.js 从“redux”导入{combinereducer} 从“../actions/actions”导入{ADD_POS_ORDER,ADD_MOBILE_ORDER,UPDATE_WS_STATUS,wsStatuses} 常量{UNINITIALIZED}=wsStatuses 常量po

我对react redux是新手,所以我想我只是缺少一些基本的东西

我有三个缩减器,两个用于处理存储中作为数组更新的订单,另一个用于显示我用于接收服务器订单的web套接字连接的状态

//reducers.js
从“redux”导入{combinereducer}
从“../actions/actions”导入{ADD_POS_ORDER,ADD_MOBILE_ORDER,UPDATE_WS_STATUS,wsStatuses}
常量{UNINITIALIZED}=wsStatuses
常量posOrders=(状态=[],操作)=>{
开关(动作类型){
案例添加位置订单:
返回[
……国家,
{
id:action.order.id,
状态:action.order.status,
名称:action.order.name,
pickupNum:action.order.pickupNum
}
]
违约:
返回状态
}
}
常量mobileOrders=(状态=[],操作)=>{
开关(动作类型){
案例添加\移动\订单:
返回[
……国家,
{
id:action.order.id,
状态:action.order.status,
名称:action.order.name,
pickupNum:action.order.pickupNum
}
]
违约:
返回状态
}
}
const wsStatus=(状态=未初始化,操作)=>{
开关(动作类型){
案例更新\u WS\u状态:
返回操作.status
违约:
返回状态
}
}
const displayApp=组合减速机({
posOrders,
移动订单,
wsStatus
})

导出默认displayApp
您的减速器工作正常


当您使用CombineReducer组合减速器时,对于每个调度的操作,都会调用所有子减速器,因为每个减速器都有机会响应每个操作


因此,在调度第一个操作后,所有状态都会初始化。

感谢您查看此信息——如果您不介意,可以在此处解释wsStatus恢复为“已初始化”的原因吗:[我用日志更新了图像,以便更好地说明我的困惑]给定示例中缺少使用组合减速器初始化存储的部分。根据我的做法,var store=Redux.createStore(displayApp);状态为wsStatus未为第二个操作重新初始化。已添加存储配置。但我仍然不确定这对WSStatus有何影响是的,我理解。我一直在想为什么在第二个操作中wsStatus的状态会被“重新初始化”。一个完全愚蠢的问题,你确定你的应用程序中只有一个商店而不是两个吗?存储文件中的可疑之处在于,您导出了存储创建函数,但也创建了一个存储,但并没有导出它。所以我不知道你会如何在其他地方使用那家商店。但是这个本地存储连接到套接字创建和关闭事件。我不相信我已经创建了两个存储。addSocketListeners只是将存储的分派函数传递给web套接字。你能进一步说明我是如何创建本地商店的吗?我遵循这个ws设置,作为参考:好的,在store.js第3行中,您创建了store,但不导出它。在第19行中,将此存储连接到套接字事件。但既然你还没有出口这家商店,我不知道你会如何在其他地方使用它。尤其是在您的组件中,它通常位于层次结构的顶部。因为您需要一些存储,我想您已经调用了fnction configureStore(),您确实从store.js导出了它-因此创建了第二个存储。第一个商店连接到ws-create和close,第二个几乎是其他所有商店。啊,谢谢!我现在明白了,这就解决了!我将addSocketListeners移动到了我声明提供者组件的地方,一切正常。非常感谢。
var store = Redux.createStore(displayApp);
store.subscribe(render);
store.dispatch({type: 'UPDATE_WS_STATUS',status:'CONNECTED'});
store.dispatch({type: 'ADD_POS_ORDER',id:'id'});
store.dispatch({type: 'UPDATE_WS_STATUS',status:'DISCONNECTED'});