Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

为什么使用redux-thunk不使用redux-saga做为中间件? #6

Open
zhangwei900808 opened this issue Sep 19, 2020 · 4 comments
Open

Comments

@zhangwei900808
Copy link

按照react redux最佳实践,应该redux-saga才是最佳选择啊,使用thunk是有什么其它考虑么?

@ForeverPx
Copy link
Contributor

按照react redux最佳实践,应该redux-saga才是最佳选择啊,使用thunk是有什么其它考虑么?

我个人的理解是最佳实践是要基于项目实际情况来说的。

saga的很多好的特性很多小项目用不到,使用起来就会比较臃肿和费劲。倒不如使用轻巧的thunk来的方便。

总归还是要看实际场景。

@PDKSophia
Copy link
Collaborator

这个问题问得好,讲讲我个人的见解 : 本质上,redux 只支持同步Action的操作,对于异步它是无能为力的,这就使得社区内部有许多中间件,如 redux-thunk、redux-saga、redux-promise 等。

在做这个中间件的时候,我也在思考异步该如何处理,那么最为重要的一点就是 : 考虑这个中间件的定位和初衷是什么?

世间万物均有其存在的价值,如 thunk、saga等,它们之所以这么火,一定是它们解决了一些问题,各自有自身的优点。

回过头再看我做这个中间件的定位和初衷,我的目的仅仅是为了解决 :

  • 在做一些demo或者小项目上,使用dva相对于“笨重”,但又想像写 dva 的数据状态管理 model 那种方式
  • 如果使用saga,那么是不是可能存在一些繁琐重复的工作?
  • 包括像同步的action,我都需要在reducer去写action,如果能提供默认的action去修改state值,是不是在开发体验上更舒服些?

相比之下,异步action的“占比”并不是很大了,只要能解决异步action的问题即可,在阅读了 redux-thunk 源码之后,再如同楼上老哥所说,确实saga的好特性在我这个中间件中,并没有发挥它的亮点,引入反而臃肿,所以就参考 redux-thunk 的源码,能轻巧简洁处理更好。

所以这就是最终的选择~

@zhangwei900808
Copy link
Author

@ForeverPx @PDKSophia 我的想法是可以提供thunk和saga版本供开发者选择,我可以不用但是框架一定要有!而且既然你都说了只做demo和小项目,我觉得react就更不适合了,反而vue更简单,用react做项目应该都是考虑到项目会很大,而且你们也加入了immutable.js对数据做更好的处理,所以用thunk有点说不过去。

@mogocat
Copy link

mogocat commented Jan 26, 2021

楼上的说得很好。我个人觉得,最开始选择的时候,就要判断是vue还是react,如果大项目,就不要用小框架了,万一不够用还得重新写。而且dva虽然臃肿,不过最佳实践并不复杂,至少我用过vue的store,感觉这个完全可以接受。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants