vuex是 vue官方推薦的一個狀態(tài)管理器。當我們遇到很多狀態(tài)改變時,組件之間的通信就會變得復雜,這時候vuex的強大就展現(xiàn)出來。

我們從vuex的原理以及vuex的api兩個部分介紹vuex

原理:

vuex的核心是store對象,它承載了vue的狀態(tài)管理。vuex的實現(xiàn)分為了2個部分,第一個部分是store的創(chuàng)建,以及第二部分store的掛載,并且解析store。

vuex通過插件安裝的形式來使得vue掛載vuex的store,當然這個是在vue組件的createBefore階段實現(xiàn)的。隨后Vuex將它直接掛載到 $options.$store 以供使用vue使用。

對于vuex的屬性,Vuex 會將 vuex 屬性解構成 getters 和 actions。并將 getters 的每個屬性都掛載 vm 下(有可能被組件的 $options.data() 的屬性覆蓋),同時定義每個值的 getter 方法,但并不會定義 setter 方法,這是因為根據(jù) Vuex 的設計是不允許開發(fā)者直接在組件內(nèi)更改 store.state,而對數(shù)據(jù)的改動要通過提交 mutation。Vuex 實際上將 vm.vuex.getter 內(nèi)的屬性當作當前 vm 的計算屬性來處理。和計算屬性的區(qū)別是計算屬性依賴計算的是 vm.$options.data 內(nèi)的值,而 vm.vuex.getter 的屬性依賴計算的是 store._vm.$options.data。這樣所有組件的渲染都將都可以直接從狀態(tài)樹拿數(shù)據(jù)來渲染 UI 。

所有的組件都可以和vuex的狀態(tài)樹進行數(shù)據(jù)交互。但是不允許直接改變狀態(tài)樹的狀態(tài),應該用vuex的mutations來提交狀態(tài)的改變。vuex會將actions內(nèi)的方法綁定到vue的$options.methods下,它們與vue中定義的方法并沒有區(qū)別。而 actions 內(nèi)的方法將通過 dispatch 觸發(fā) mutations 來更新全局狀態(tài),actions方法與mutations的區(qū)別是,mutations改變state并且必須是同步改變,而actions可以作為異步提交的方法,dispatch 可以接收一個promise,并且返回一個promise。

2.API:

state:在vue中引入store對象,在子組件中通過this.$store來訪問vuex中狀態(tài),并且我們最好在vue的computed中獲取vuex的狀態(tài)。

mapState:這是一個語法糖,可以快捷的獲取更多的state。

接受一個object參數(shù):

移動開發(fā)培訓,Android培訓,安卓培訓,手機開發(fā)培訓,手機維修培訓,手機軟件培訓

// 在單獨構建的版本中輔助函數(shù)為 Vuex.mapStateimport { mapState } from 'vuex'export default {  // ...  computed: mapState({    // 箭頭函數(shù)可使代碼更簡練
    count: state => state.count,    // 傳字符串參數(shù)&nb
        
		

網(wǎng)友評論