看过 vuex 和 redux 文档的人应该都有感触,vuex 的接口非常的简单,以至于看一遍 Getting Started 就可以上手写代码了。相比之下 redux 的文档很多人读了 N 多遍也不知道:reducer 应该如何拆分、action 应该怎么定义、dispatch 异步怎么做、Ajax 怎么使用、middleware 什么时候需要用、enhancer 干什么的、高阶函数怎么这么多 等等一系列问题。那么我们是否可以让 redux 用起来像 vuex 呢?
详情请见:Make redux like vuex
每次都要connect多麻烦 不知能否用 react 能否实现注入 this.$store
把generator改成async/await的dva
@nihgwu 定位不一样,这只是一个 store 库,而 dva 定位是一个框架。
@magicdawn 目前没有加 mapGetters 等,因为 redux 官方用 react-redux,除非自己再写一套类似的
@magicdawn 而且 vuex 也不建议用 this.$store,尽量用 map
React 应该可以使用 context 注入 this.$store, 但是没有 computed property 这块, 使用了 this.$store 不会自动 subscribe 吧
我使用 getter 较少, 直接使用 this.$store
更多, 需要复用的时候再封装成 getter
扯不上 dva, 使用 redux-thunk 就可以 await store.dispatch 啦… 就又和 vuex 一样啦 … 不理解 redux-saga 要干啥…可能没有辣么复杂的应用场景
@magicdawn 恩呢,saga 确实有点复杂了
@helloyou2012 dva 的下一个版本就是要解绑成一个专注于状态管理的库了 还有 saga 其实在处理逻辑事务时非常有用,如果你只把他用来处理async dispatch, 跟async/await几乎没有任何区别,不过就是两个keyword不一样
@nihgwu 是的,前几天已经跟 dva 团队提了:https://github.com/dvajs/dva/issues/772#issuecomment-294413146
@nihgwu saga 专注于 Task,所以 saga 官方推荐都是分成每个小的独立的 saga,其实 store 层面可以不用考虑这方面,只要提供接口方便加类似的 plugin 就可以的。