this.$emit('to',this.abc)vue
1.在state中定義數據vuex
2.Getter至關於vue中的computed計算屬性,getter 的返回值會根據它的依賴被緩存起來,且只有當它的依賴值發生了改變纔會被從新計算,Getters 能夠用於監聽、state中的值的變化,返回計算後的結果redux
3.給action註冊事件處理函數,當這個函數被觸發時候,將狀態提交到mutations中處理。actions裏面自定義的函數接收一個context參數和要變化的形參緩存
4.mutations是一個對象裏面的方法都是同步,是更改state初始狀態的惟一的方法,具體的用法就是給裏面的方法傳入參數state或額外的參數數據結構
解析:此題考查vuex中數據的管理和數據結構的設計,還有mutations和actions的區別
解答:首先要明確一個特別重要的原則,就是否是全部的數據都要放在vuex中,由於vuex有一句名言:假如你並不知道爲何要使用vuex,那就不用使用它!異步
那什麼樣式的數據須要放在vuex中呢?首先這個數據要被多個組件頻繁用到,若是隻是被一個組件用到,那徹底沒有必要爲了使用vuex而使用vuex模塊化
上面這種結構,一看便知道咱們應該哪裏貨物系統數據即設置數據函數
如上圖代碼所示,咱們很清晰的可以分清楚每一個模塊的數據,這樣不會致使數據管理的混亂網站
不一樣於redux只有一個action,vuex單獨拎出了一個mutations,它認爲更新數據必須是同步的,也就是隻要調用了提交數據方法,在mutation裏面才能夠修改數據this
那麼若是咱們想作異步請求,怎麼作?這裏vuex提供了專門作異步請求的模塊,action,固然action中也能夠作同步操做,只不過度工更加明確,全部的數據操做,不管是同步仍是異步,均可以在action中完成
mutation只負責接收狀態,同步完成數據快照
因此能夠認爲
分析:當vuex維護數據愈來愈複雜的時候,模塊化解決方案
解析:使用單一的狀態樹,應用的全部狀態都會集中在一個比較大的對象上面,隨着項目需求的不斷增長,狀態樹也會變得愈來愈臃腫,增長了狀態樹維護的複雜度,並且代碼變得沉長;所以咱們須要modules(模塊化)來爲咱們的狀態樹分離成不一樣的模塊,每一個模塊擁有本身的state,getters,mutations,actions;並且容許每一個module裏面嵌套子module;以下:
上面的設計中,每一個vuex子模塊均可以定義state/mutations/actions
須要注意的是,咱們原來使用vuex輔助函數
mapMutations/mapActions引入的是全局的mutations和actions,而且咱們vuex子模塊也就是module1,module2...這些模塊的action/mutation也註冊了全局
也就是若是module1中定義了loginMutation,module2中也定義了loginMutation,此時,mutation就衝突了
若是重名,就報錯了...
若是不想衝突,各個模塊管理本身的action和mutation,須要給咱們的子模塊一個屬性namespaced:true
那麼組件中怎麼使用子模塊的action和mutations
步驟基本是死的 熟悉就行了
此題具體考察Vuex雖然是一個公共狀態,可是公共狀態還能夠切成若干個子狀態模塊,也就是moduels
解決當咱們的狀態樹過於龐大和複雜時的一種方案,可是筆者認爲,一旦用了vuex,幾乎就認定該項目是較爲複雜的