vuex的mutations和actions的区别这么理解是否正确
网上看了很多教程,都说的是mutations不支持异步,actions支持异步,但还是不太懂
今天看到别人的源码里,在actions里写了很多请求,有了点启发
我现在理解的是:
- 可以在mutations和actions里写异步请求,并被外部组件调用。但是在mutations里的异步请求成功后不能更新state,actions里的异步请求成功后可以commit调用mutations去更新state
- 如果我把异步函数写在外部组件里,请求成功后commit调用mutations更新state也是可以的
不知道这两个理解对不对?
如果上边两个理解正确,我突然又想到在mutations写两个函数A和B,A用来异步请求,B用来更新state,然后外部组件commit调用A异步请求成功后,A再commit调用B来更新state,这样是否可行?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
首先翻译一下你的问题,其实你的问题就一个
vuex中更新state的方法
现在来回答开始提到的问题
这种你可以去看vuex的源码实现,不多,1天看的完的
在vuex里,改变state的唯一方法是提交commit来触发_mutations
而调用actions时会判断是不是Promise,调用异步处理
你在mutations里写情求他都不会跑then方法,你怎么改变
从另一个方面去理解,action,mutations都是vuex组成的一部分,
他们在vuex里各司其职,不用纠结为什么不在mutation里写异步请求,因为它就是这样设计的
如果好奇为什么要这样设计,楼上大神解释了源码,学习了学习了