在Redux中拦截HTTP请求

Jon*_*ves 3 redux

许多redux示例显示直接在异步操作中发出HTTP请求; 但是这会导致所有请求共同的重复代码数量超出,例如:

  • 根据状态代码重试失败的请求
  • 为每个请求附加公共HTTP标头.
  • 根据响应调用其他http请求(即:oauth令牌刷新)
  • 在路线转换中中止飞行中的请求.

我的直觉是,一个中间件可以用来发出http请求(与之相同redux-api-middleware),这可以保持飞行中的请求store- 但是我也想知道我是否依赖于糟糕的习惯 - 有点重复为不变性付出的小代价?

Dan*_*mov 8

您的动作创建者只是JavaScript函数.

如果在多个函数之间存在重复,则将公共代码提取到另一个函数中.这没什么不同.不要复制代码,而是将公共代码提取到函数中并从您的操作创建者中调用它.

最后,可以使用自定义中间件抽象出这种模式.查看Redux仓库中的"真实世界"示例,了解它是如何完成的.