官方文档:
真的只能这样吗?
带着这个疑问我们看下这篇文章
结论:
可以的,但是必须保证一个原则:同一类型的action只有一个声明,但是不建议这样使用。
原因:
-
核心点:dispatch在执行action的方法时,如果同一类型的action只有一个则是作为普通方法执行,多个则是使用Promise.all,这就是问题所在。
dispatch (_type, _payload) { // ... const result = entry.length > 1 ? Promise.all(entry.map(handler => handler(payload))) : entry[0](payload) // ... }多个action修改同一个state,根据Promise.all的特性,没办法保证state的结果。 至于使用Promise.all的原因,因为action设计初衷是可以随意使用异步操作,提高效率。
-
遵守单一职责的原则,一个方法干一件事。