问题标签 [redux-middleware]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
668 浏览

javascript - redux 中间件和 redux-observable 史诗之间有什么区别?

我想了解何时适合在redux可观察的史诗上使用redux 中间件(反之亦然)。

来自 redux 中间件文档

它在调度一个动作和它到达减速器的那一刻之间提供了一个第三方扩展点。人们使用 Redux 中间件进行日志记录、崩溃报告、与异步 API 通信、路由等。

来自 redux-observable文档

虽然您通常会根据收到的某些操作生成操作,但这实际上并不是必需的!进入 Epic 后,只要从最终返回的流中输出的任何内容都是一个动作,就可以使用任何你想要的 Observable 模式。

我的理解是,redux 中间件中的操作可能会也可能不会命中 reducer,如果确实如此,它可能会或可能不会导致状态更改。在史诗中,你可以产生一个新的动作,它可能会也可能不会击中减速器或导致状态变化。

看起来两者都可以用来启用副作用,所以两者之间的区别对我来说变得有点模糊。

问题: FRP 基础是唯一将它们区分开来的东西,还是应用程序生命周期中的特定事件可以更好地处理经典中间件或史诗?

0 投票
3 回答
6907 浏览

reactjs - 什么时候应该使用 Redux Saga 而不是 Redux Thunk,什么时候应该使用 Redux Thunk 而不是 Redux Saga?

这个问题与过去不同,这就是为什么。这个问题是什么时候。由于两者本身都是很好的框架,问题是我什么时候应该使用 thunk 而不是 saga。因为我的一位朋友一直坚持让我在我们的应用程序中使用 saga,但没有明显的原因。提前谢谢

0 投票
0 回答
114 浏览

javascript - Redux:返回用于函数式编程的操作负载的中间件

TLDR:以下 Redux 中间件是否可以,还是一个坏主意/坏做法?如果它不好,你还会如何使用dispatchpipe 或 compose(以声明方式)?对于 ES6 版本,请参见下文。我最初想在 Redux GitHub 上打开问题,但它显然只允许错误报告,并将您推荐给 StackOverflow ‍♂️</p>

动机:我目前正在学习函数式编程。我正在用 Redux 为我的状态管理和 Ramda 编写一个 React 应用程序来帮助我进行函数式编程。

我有一个loginasyncPipe. 它获取凭据、登录用户、保存令牌,并使用该令牌向服务器发出经过身份验证的 GET 请求。来宾请求返回一个或多个对象(房屋)的列表。

现在问题来了。首先,我想要dispatch餐厅列表 ( dispatch(addHouses(houseList)))。接下来,如果有多个房屋,我想将用户导航到列表屏幕,以便他可以选择房屋。如果只有一所房子,我想立即将他导航到那所房子并挑选它。采摘手段dispatch(pickHouse(house))

我在这个问题中普遍询问了这个问题。一位评论者建议创建一个中间件,以便dispatch返回相应的操作有效负载并可以在管道中使用。

因此,使用Redux 文档,我写了这个:

现在您可以在asyncPipe,pipecompose函数中使用它。

这是返回有效负载的正确方法吗?(我已经对其进行了测试,中间件似乎可以工作。)这个中间件可以吗,还是违反了一些最佳实践?

0 投票
1 回答
1243 浏览

javascript - 如何在 redux 中间件中调度一个动作?

我写了一个中间件,就像一击:

并将其添加到我的商店:applyMiddleware(testMiddleware)在任何时候,我都会test middleware进入我的控制台。

我写了一个简单的动作,像这样:

如何sayHi在我的中间件中调度操作?

0 投票
1 回答
826 浏览

javascript - 如何将参数传递给自定义 Redux 中间件?

我想将一个参数传递给一个自定义的 Redux 中间件。但我不知道如何在自定义中间件中使用参数。

例子:

0 投票
2 回答
2804 浏览

javascript - 如何在 TypeScript 中实现 redux 中间件类

根据 Redux 的 typescript 定义,应该实现这些接口来制作 middelware:

我试过这个:

但是编译器抱怨这个:

更新:

它应该是一个类,而不是一个函数。我创建了一个基类,以便以后可以继承它们。

0 投票
0 回答
30 浏览

redux-middleware - 如何调用这个自定义的 redux 错误中间件?

这是源代码。

结果是BBBBBB Error:AAAAAAA

我认为 redux 中间件位于storestore.dispatch()之间。reducer

当我们向 store 发送一些动作时,store 的 reducer 在中间件函数之后被调用next()

我错了吗?

e但是那个错误中间件怎么能捕获throw new Error("AAAAAAA")到reducer函数中呢?

您可以在https://www.youtube.com/watch?v=DJ8fR0mZM44中看到上述行为

在视频中,讲师说“实际错误从未触发”,但作为记录错误对象的中间件,未能正确理解。

0 投票
1 回答
85 浏览

redux - 当调用 createStore() 我得到: TypeError: middleware is not a function

在标记这有重复之前,请注意我已经检查过:

我正在尝试同时在我的 Redux 商店上集成redux-thunk和使用替换。replaceReducer

基本上,我有一个地方:

然后:

现在,我通过createStore()线路触发了一个错误(所以在更换任何减速器之前)。


版本:

  • 还原:4.0.1
  • redux-thunk:2.3.0

编辑:

堆栈跟踪指向的函数与这个问题TypeError: middleware is not a function directly from the call I make.applyMiddleware完全相同。

0 投票
2 回答
2709 浏览

reactjs - 在动作创建者中的 Axios 请求后调用 Redux 中间件刷新令牌

如果令牌过期,我正在创建一个 redux 中间件以在任何请求之前刷新令牌。
问题是在第一次调用之后我总是得到error 400 bad request,但是如果有另一个调用(这是一个分页请求)它工作正常,因为令牌被刷新了。
我注意到 Axios 请求在新令牌进入之前和设置新的 Axios 授权标头之前被触发,所以我尝试使中间件异步等待,但仍然没有运气......

我还怀疑 Axios 请求是第一次使用旧 Token 调用的。
我在这里做错了什么?

======================

编辑

我试图放弃所有中间件并实现 axios 拦截器,因为中间件没有捕获 axios 请求......

但这似乎也不起作用,请求第一次在 Authorization 标头中使用旧 Token 触发。

我能做些什么?

0 投票
1 回答
980 浏览

reactjs - 在 reducer 之后调用 Redux 中间件

我创建了一个这样的中间件:

我的商店配置是:

我还有一个减速器,我在日志和调试器中看到减速器首先被调用,然后是中间件。关于我配置错误的任何建议?