Redux 和 Vuex 的设计思想
Flux的核心思想就是数据和逻辑永远单向流动,由三大部分组成
dispatcher(负责分发事件),
store(负责保存数据,同时响应事件并更新数据)和
view(负责订阅store中的数据,并使用这些数据渲染相应的页面),
Redux和Vuex是flux思想的具体实现,都是用来做状态管理的工具,
Redux主要在react中使用,Vuex主要在vue中使用。
Redux设计和使用的三大原则:
(1)单一的数据源:整个应用的 state被储存在唯一一个 store中;
(2)状态是只读的:Store.state不能直接修改(只读),必须调用dispatch(action) => store.reducer => return
newState;action是一个对象,有type(操作类型)和payload(新值)属性;
(3)状态修改均由纯函数完成:在Redux中,通过纯函数reducer来确定状态的改变,
因为reducer是纯函数,所以相同的输入,一定会得到相同的输出,同时也不支持异步;返回值是一个全新的state;
vuex由State + Muatations(commit) + Actions(dispatch) 组成:
(1)全局只有一个Store实例(单一数据源);
(2)Mutations必须是同步事务,不同步修改的话,会很难调试,不知道改变什么时候发生,
也很难确定先后顺序,A、B两个mutation,调用顺序可能是A -> B,但是最终改变 State的结果可能是B -> A;
Q.E.D.