状态管理器相关

主要是flux、redux、vuex等

主要问题如下:

一、flux、redux、vuex数据流向,(例如:点击按钮触发到状态更改,数据是如何流向的?)

例如 flux:

1.用户访问 View;

2.View 发出用户的 Action;

3.Dispatcher 收到 Action,要求 Store 进行相应的更新;

4.Store 更新后,发出一个 "change"事件;

5.View 收到 "change"事件后,更新页面;

二、vuex和redux区别

三、vuex数据流?为啥要遵循这个数据流?假如在页面中直接修改state,而不是通过mutation的commit方式修改,会怎么样?

1、使用 vuex 修改state时,有两种方式:

1) 可以直接使用 this.$store.state.变量 = xxx;

2) this.$store.dispatch(actionType,payload) 或者:this.$store.commit(commitType,payload)

2、异同点:

1) 共同点:能够修改state里的变量,并且是响应式的(能触发视图更新);

2) 不同点:若将vue创建store的时候传入 strict:true,开启严格模式,那么任何修改state的操作,只要不经过 mutation 的函数,vue就会throw error:[vuex] Do not mutate vuex store state outside  mutation handlers。

使用 dispatch 和 commit 的区别在于,前者是异步操作,后者是同步操作,所以一般情况下,推荐直接使用commit,即 this.$store.commit(commitType,payload),以防异步操作会带来的延迟问题。

3、使用commit提交到mutation修改state的优点:

 vuex能够记录每一次state的变化记录,保存状态快照,实现时间漫游/回滚之类的操作。

结论:官方推荐最好设置严格模式,并且每次都要commit来修改state,而不能直接修改state,以便于调试等。

posted @ 2019-01-25 15:09  让心去旅行  Views(87)  Comments(0Edit  收藏  举报