我已经开始将redux集成到我的第一个反应应用程序中 . (这里很新鲜)
这是一个购物车应用程序 . 我希望将某些业务逻辑集中到中间件类中 .
例如 . LeaveCart - > NotifyServerEmptyCart,COUNTDOWN_HIDE,MODAL_SHOW . (后续行动)
有点像行动事件经理的命令 .
有什么理由我不能将我自己的middlware函数导出为:
export function signalRMiddleware(store: any) {
return (next: any) => (action: any) => {
if (action.signalR) {
switch (action.type) {
case ABC:
_hub.server.methodOnTheServer();
break;
default:
{
const myCurrentState = store.getState().objectWithinState;
_hub.server.methodOnTheServer2(action.type, myCurrentState);
}
}
}
return next(action);
}
}
源代码:https://medium.com/@lucavgobbi/signalr-react-redux-5a100a226871
然后将其注册为
let store = createStore(
todoApp,
// applyMiddleware() tells createStore() how to handle middleware
applyMiddleware(signalRMiddleware)
)
源代码:https://medium.com/@lucavgobbi/signalr-react-redux-5a100a226871
这个中间件正在“监听”这个动作,即 . 我的组件仍然需要调用dispatch({type:ABC}),这意味着所有reducers都将接收此调用 .
然而Thunk允许我直接从我的组件调用Thunk函数,而不通知所有reducers,直到我的Thunk函数可以调度适当的操作 .
我可以像thunks一样直接调用我自己的自定义中间件函数,还是我完全混合这两个概念?