vuex 和 redux的区别
Vuex和Redux都是用来作全局状态管理的,由于Vuex和Redux都是从Flux中衍生出来,同时Vuex对Redux部分思想也有一些借鉴,所以Vuex和Redux有很多相同点。 其中,redux是一个范用的库,可以单独使用。而vuex是专门用来配合vue使用的。
1、vuex
-
state 存储状态
-
getters 是状态的计算属性,状态改变自动会重新计算 。
-
mutations 同步更改状态。
-
actions 发送异步请求,拿到数据
工作流程:
(1)通过dispatch去提交一个actions,
(2) actions接收到这个事件之后,在actions中可以执行一些异步|同步操作,根据不同的情况去分发给不同的mutations,
(3)actions通过commit去触发mutations,
(4)mutations去更新state数据,state更新之后,就会通知vue进行渲染
2、redux
- state 存储状态
- reducer 改变 state 的唯一方法,必须为纯函数,判断 action 的type相应更新state。每次 reducer 都是返回一个全新的 state。
- action 传递type和payload参数 。
- dispatch 的作用是驱动状态进行修改。
工作流程 :
- View在redux中会派发action方法
- action通过store的dispatch方法会派发给store
- store接收action,连同之前的state,一起传递给reducer
- reducer返回新的数据给store
- store去改变自己的state
3、主要区别
(1)区别
可以通过下图进行区分
Vuex 改进了 Redux 中的 Action 和 Reducer 函数,以 mutations 变化
函数取代 Reducer,无需 switch,只需在对应的 mutation 函数里改
变 state 值即可
Vuex 由于 Vue 自动重新渲染的特性,无需订阅重新渲染函数,只要
生成新的 State 即可