将中间件应用于单个商店

时间:2016-12-09 14:09:14

标签: javascript reactjs redux

在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中使用吗?

1 个答案:

答案 0 :(得分:2)

中间件执行中间件的功能:处理每个请求(在这种情况下为操作),在它们到达其端点(reducers)之前,或由于某种原因被中间件停止。

因此,您需要确保您的中间件能够以某种方式识别您的操作。例如redux-thunk通过检查它们是否为函数来识别动作,redux-form为其动作类型使用前缀(类似于@REDUX_FORM/YOUR_ACTION_NAME的行)。这是你应该思考的方式,因为否则会违背中间件的目的。