Redux 工作流程
- 首先,用户(通过 view)发送 Action,发送方式就用到了 dispatch 方法。
- 然后,Store 自动调用 Reducer,并传入俩个参数,当前 State 和 收到的 Action。而 Reducer 会返回新的 State。
- 最后,Store 根据接收到的 State,判断是否发生变化。一旦发生变化,Store 中的数据会进行更新。同时,Store 会回调监听函数,来更新 View(外部通过
subscribe
来订阅事件)
store 类似于 数据存储中心
但是他要更改数据的时候不能直接修改,数据修改更新的角色由Reducers来担任,store只做存储
Redux 状态管理器和变量挂载到 window 中有什么区别
两者都是存储数据以供后期使用。但是Redux状态更改可回溯——Time travel,数据多了的时候可以很清晰的知道改动在哪里发生,完整的提供了一套状态管理模式。
Redux 和 Vuex 有什么区别,它们的共同思想
1)区别
- Vuex改进了Redux中的Action和Reducer函数,以mutations变化函数取代Reducer,无需switch,只需在对应的mutation函数里改变state值即可
- Vuex由于Vue自动重新渲染的特性,无需订阅重新渲染函数,只要生成新的State即可
- Vuex数据流的顺序是∶View调用store.commit提交对应的请求到Store中对应的mutation函数->store改变(vue检测到数据变化自动渲染)
vuex 弱化 dispatch,通过commit进行 store状态的一次更变;
取消了action概念,不必传入特定的 action形式进行指定变更;
弱化reducer,基于commit参数直接对数据进行转变,使得框架更加简易;
2)共同思想
- 单—的数据源
- 变化可以预测
Vuex 有哪几种属性?
- state => 基本数据(数据源存放地)
- getters => 从基本数据派生出来的数据
- mutations => 提交更改数据的方法,同步
- actions => 像一个装饰器,包裹mutations,使之可以异步。
- modules => 模块化Vuex
为什么 Vuex 的 mutation 中不能做异步操作?
如果mutation支持异步操作,就没有办法知道状态是何时更新的,无法很好的进行状态的追踪,给调试带来困难。