redux:redux
单向数据流图:函数
交叉流程图:spa
reducer是一个纯函数,用于接收原 state tree 和 action 做为参数,并生成一个新的 state tree 代替原来的。code
redux不会修改任何一个 state,而是用新生成的 state 去代替旧的,由于应用了不可变数据(Immutable Data)。对象
Redux 的工做方式遵循了严格的单向数据流原则,整个生命周期为:blog
------------------------------------------------------------------------------------------------------------------------------------生命周期
Mobx:字符串
--------------------------------------------------------------------------------------------------------------------------------------it
Vuex:io
Vuex 中没有 reducer 来生成全新的 state 来替换旧的 state,Vuex 中的 state 是能够被修改的。
即,以 mutations
变化函数取代 Reducer
,无需 switch ,只需在对应的 mutation 函数里改变 state 值便可。
一个 mutation 是由一个 type 和与其对应的 handler 构成的,type 是一个字符串类型用以做为 key 去识别具体的某个 mutation,handler 则是对 state 实际进行变动的函数。
在 Vuex 中能够记录每次 state 改变的具体内容,state 的变动可被记录与追踪。
Vuex 中的 action 也是 store 的组成部分,它能够被当作是链接视图与 state 的桥梁,它会被视图调用,并由它来调用 mutation handler,向 mutation 传入 payload。