在redux中,您可以轻松创建中间件。我有一个看起来像这样的,很容易适用于我的整个商店。
function socketMiddleware(store) {
const socket = io.connect(SOCKET_URL);
socket.on('connect', () => store.dispatch({ type: CONNECTED }));
return next => action => {
// does something with the socket.
}
}
但是,我想提供一个只在我的商店中的单个reducer上运行的中间件,每当调度一个更新该reducer的动作时。那就是:
export default wrapWithMiddleware((state = INITIAL_STATE, action) => {
switch (action.type) {
default:
return state;
}
})
这可以在redux中使用吗?
答案 0 :(得分:2)
中间件执行中间件的功能:处理每个请求(在这种情况下为操作),在它们到达其端点(reducers)之前,或由于某种原因被中间件停止。
因此,您需要确保您的中间件能够以某种方式识别您的操作。例如redux-thunk
通过检查它们是否为函数来识别动作,redux-form
为其动作类型使用前缀(类似于@REDUX_FORM/YOUR_ACTION_NAME
的行)。这是你应该思考的方式,因为否则会违背中间件的目的。