理解与优化 Redux middlewares

阅读时长 4 分钟读完

什么是 Redux middlewares

Redux middlewares 是一种可以在 Redux 中扩展功能的机制。它为我们提供了一个拦截 Redux 的 action 和 state 访问的管道,使我们能够对这些操作进行自定义处理,例如异步请求、日志跟踪等等。

一个 Redux middleware 是一个函数,它接收 store.dispatch 和 store.getState 方法,并返回一个函数,这个函数将接收一个 next 参数,表示下一个 middleware 的处理函数,最终返回一个接收 action 参数的函数。

上面的代码是一个简单的 logger middleware,它会在 action 被 dispatch 后打印出 action 和当前 state(dispatching 和 next state)的值。

如何使用 Redux middlewares

要使用一个 middleware,我们需要在创建 store 的时候将其注入到 createStore 函数中。

我们可以使用 applyMiddleware 函数包装我们自己的中间件,并将包装后的函数传递给 createStore 函数,从而应用中间件。

如何编写一个 Redux middleware

编写一个 Redux middleware 可以按照以下步骤进行。

定义中间件

定义一个接收 store 参数的函数,返回一个接收 next 参数的函数,最终返回一个接收 action 参数的函数。

编写中间件处理逻辑

中间件可以对 action 进行一系列的处理,例如修改 action 的内容、执行异步请求、打印日志等等。

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

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

上面的代码是一个执行异步请求的 middleware,在匹配到 FETCH_USERS action 时会执行一个 API 请求,并将接收到的数据封装成 SET_USERS action,然后将 SET_USERS action 交给下一个 middleware 处理。

注册中间件

将编写好的中间件通过 applyMiddleware 函数注册到 store 中。

如何优化 Redux middlewares

由于每个 middleware 在处理一个 action 时都需要依次将其传递给下一个 middleware,因此 middleware 的顺序会影响到整个系统的性能。

优化 middleware 的顺序,可以通过将拥有大量逻辑的 middleware 放在队列的最后一步,而将处理逻辑简单的 middleware 放在前面,可以避免出现重复的处理逻辑,从而提高整体性能。

总结

Redux middlewares 是一种非常强大的技术,它为处理 Redux 中的 action 和 state 提供了灵活的方式,使我们在处理异步请求、日志打印等方面更加得心应手。

本文介绍了 Redux middlewares 的基本用法、编写和优化方法,并通过简单的示例代码展示了其效果。希望能够对您有所帮助。

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

纠错
反馈