与 redux-thunk 相比,ngrx/effects 方法都有哪些优势?

Posted

技术标签:

【中文标题】与 redux-thunk 相比,ngrx/effects 方法都有哪些优势?【英文标题】:What are the advantages of the ngrx/effects approach over redux-thunk?与 redux-thunk 相比,ngrx/effects 方法有哪些优势? 【发布时间】:2019-03-02 05:43:37 【问题描述】:

我目前正在规划一个大规模的 Angular 6 应用程序,并试图找到一种最适合团队需求的处理副作用的方法。

我意识到在 Ngrx 生态系统中最常用的方法是使用 ngrx/effects 库,我想知道使用它与 thunk 相比有什么优势方法,这似乎是 React 应用程序最流行的方法。

我的想法是将所有引起副作用的逻辑隔离在一个地方,我总是倾向于将它们隔离在 Action Creators 范围内。将所有副作用逻辑移动到不同的“抽象层”感觉会增加编写副作用动作的开销,而没有可观的附加值,因为大多数“强逻辑”动作都是用于处理副作用的。

还有其他理由支持效果而不是重击吗? Angular 中的 ngrx 和 React 中的经典 Redux 之间有什么根本区别,这使得 ngrx/effect 成为更好的选择吗?

【问题讨论】:

【参考方案1】:

ngrx/effects 使用 rxjs (Observable) 的强大功能,更适用于 Angular 环境。

【讨论】:

我明白了,但是是什么让它比传统的 angular thunk 更好?只是感觉开发人员需要更多的编码开销..【参考方案2】:

如果你使用 sagas 而不是 thunk (https://github.com/redux-saga/redux-saga),React/Redux 堆栈中的差异可能是因为使用 thunk 可以通过一个操作生成很多副作用,但是使用 saga 你可以生成许多异步操作从单个动作开始,每个动作都有自己的作用域,因此调试、代码拆分和关注点分离更容易。

【讨论】:

有什么区别?为什么我不能在 Angular 上使用 thunks 方法?这没有回答我的问题 你可以使用 thunk,但副作用是上面描述的洞穴热

以上是关于与 redux-thunk 相比,ngrx/effects 方法都有哪些优势?的主要内容,如果未能解决你的问题,请参考以下文章

使用 redux-thunk 和直接调用 dispatch() 有啥区别

NextJS 和 Redux-thunk:出现“错误:“getInitialProps”中的循环结构”

如何使用“redux-thunk”调用 ajax?

redux-thunk 的唯一好处是啥?

使用redux-thunk完成异步connect的第二个参数的对象写法。

Redux-thunk “调度不是函数”