npm 包 redux-middlewares 使用教程

阅读时长 5 分钟读完

什么是 redux-middlewares

redux-middlewares 是一个用于管理 Redux 中间件的 npm 包。Redux 中间件是 Redux 提供的扩展机制,用于在 Redux 的 action 到达 reducer 之间对 action 进行截获、拦截或修改。redux-middlewares 将所有中间件进行了封装,使得我们在使用时更加方便。

安装

我们可以使用 npm 命令行工具安装 redux-middlewares:

使用

想要使用 redux-middlewares,我们需要先将其导入到我们的 js 文件中:

其中的 applyMiddleware 函数是 Redux 提供的方法,用于集成中间件。我们可以把 middlewares 对象传入 applyMiddleware 函数中来应用中间件。例如:

上述代码中,我们将 middlewares.logger 应用到了 reducer 中,它将会对每一个经过 Redux 的 action 进行详细打印输出,方便我们进行调试。

除了 logger 中间件外,redux-middlewares 中还提供了许多其他中间件:

createThunkMiddleware

createThunkMiddleware 中间件允许我们在 action Creators 中写异步的 action。例如:

-- -------------------- ---- -------
------ - ------------ - ---- ----------------
------ - --------------------- - ---- --------------------

----- ------------- - ---------------------------

----- --------- - -- -- ---------- -- -
  ---------------------------------
  -------------
    ---------------- -- ----------------
    ------------ -- --------------------------------------
    -------------- -- ---------------------------------------
-

------ ----- ---------- - ------------------------

上述代码中,我们使用 createThunkMiddleware 中间件允许我们在 fetchData 函数中进行异步的 action 操作,通过 dispatch(actionCreator.request())、dispatch(actionCreator.success(data)) 和 dispatch(actionCreator.failure(error)) 将请求的结果传递到 reducer 中。

createSagaMiddleware

createSagaMiddleware 中间件是一个强大的中间件,提供了以前只能在 Redux-saga 中使用的功能。它允许我们在一个独立的线程中调用异步代码,还支持取消异步操作。下面是一个示例:

-- -------------------- ---- -------
------ - ------------ - ---- ----------------
------ - -------------------- - ---- --------------------

----- ------------- - ---------------------------

--------- ----------- -
  --- -
    ----- -------- - ----- ----------- -------
    ----- ---- - ----- ----------------
    ----- ---------------------------------
  - ----- ------- -
    ----- ----------------------------------
  -
-

------ ----- ---------- - ----------------------
  ------ -
    ------- -
      ----- ------------------------ -----------
    -
  -
---

上述代码中,我们使用了 createSagaMiddleware,它可以让我们将异步操作分离为单独的 sagas 函数,并且支持取消异步操作。

除了上面的中间件外,redux-middlewares 包还提供了 AuthMiddleware、FaviconMiddleware、FormicMiddleware、ImmutableStateMiddleware、NotificationMiddleware、PaginationMiddleware、RouterMiddleware、TimeoutMiddleware 和 还支持自定义插件。

注意事项

在使用 redux-middlewares 时,需要注意以下几点:

  1. 一个 action 可以同时被多个中间件截获并处理,如果不小心改变了 action,后续中间件将会接收到修改以后的 action,可能引起错误。
  2. createThunkMiddleware 和 createSagaMiddleware 并不兼容,因为它们同样用于处理异步 action。如果把它们混用,可能会导致不可预测的结果。
  3. 在使用 LoggerMiddleware 时,需要确保所有的 action、reducers 和 middleware 都是纯函数,否则打印的日志可能会不准确或有误导性。

结语

redux-middlewares 提供了许多强大的工具让我们更加便捷地编写 Redux 应用程序,同时使得我们能够更加专注于业务逻辑的编写,节省大量时间。希望本篇技术文章对你有所帮助,如有不当之处,还望不吝指教。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60067008e361a36e0bce8b4c

纠错
反馈