先看Vuex作者尤雨溪的回答
Vuex 其实是一个针对 Vue 特化的 Flux,主要是为了配合 Vue 本身的响应式机制。当然吸取了一些 Redux 的特点,比如单状态树和便于测试和热重载的 API,但是也选择性的放弃了一些在 Vue 的场景下并不契合的特性,比如强制的 immutability(在保证了每一次状态变化都能追踪的情况下强制的 immutability 带来的收益就很有限了)、为了同构而设计得较为繁琐的 API、必须依赖第三方库才能相对高效率地获得状态树的局部状态等等(相比之下 Vuex 直接用 Vue 本身的计算属性就可以)所以 Vue + Vuex 会更简洁,也不需要考虑性能问题,代价就是 Vuex 只能和 Vue 配合。Vue + Redux 也不是不可以,但是 Redux 作为一个泛用的实现和 Vue 的契合度肯定不如 Vuex。
作者:尤雨溪 链接:www.zhihu.com/question/38…
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
vuex的流向:
view——>commit——>mutations——>state变化——>view变化(同步操作) view——>dispatch——>actions——>mutations——>state变化——>view变化(异步操作)
redux的流向:
view——>actions——>reducer——>state变化——>view变化(同步异步一样)
Vuex相对于Redux的不同点有:
(1)改进了Redux中的Action和Reducer函数,以mutations变化函数取代Reducer, 无需switch,只需在对应的mutation函数里改变state值即可
(2)由于Vue自动重新渲染的特性,无需订阅重新渲染函数,只要生成新的State即可
(3)Vuex数据流的顺序是:View调用store.commit提交对应的请求到Store中对应的mutation函数->store改变(vue检测到数据变化自动渲染)
本文正在参与「掘金小册免费学啦!」活动, 点击查看活动详情