vuex相關

vuex應用的核心就是store(倉庫),「store」基本上就是一個容器,它包含着你的應用中大部分的狀態。vue

vuex和單純的全局對象的不一樣點:vuex

1.vuex的狀態存儲是響應式的,store狀態發生變化的時候,其對應的組件也會高效更新;緩存

2.不能直接修改store的狀態,修改它惟一的途徑就是顯示的提交mutation,方便跟蹤每一個狀態的變化。異步

 

state函數

vuex能夠經過state獲取相應狀態,爲了方便組件更好的調用能夠寫到計算屬性裏this

簡單寫法:spa

import { mapState } from 'vuex'
對象

computed: {blog

  ...mapState(['age'])事件

}

 

getter

用於從store中派生出一些狀態,getter的返回值會根據它的依賴被緩存起來,只有當它的依賴值發生改變纔會被從新計算

使用方法相似state:

this.$store.getters.isAdult

簡單寫法:

import { mapGetters } from 'vuex'

computed: {

  ...mapGetters(['isAdult'])

}

 

mutation

它是更改vuex的store中的狀態的惟一方法。它相似於事件,每一個mutation都有一個字符串的事件類型和一個回調函數。

回調函數第一個參數是state,第二個參數是載荷(payload),載荷通常是個對象

必須是同步函數

其實直接賦值也能夠修改狀態,在vuex實例新增屬性strict:true屬性能夠禁止直接修改,可是隻能用於開發環境。

簡單寫法:

import { mapMutations } from 'vuex'

methods: {

  ...mapMutations(['updateAge'])

}

mounted: function () {

  this.updateAge(26)

}

 

action

相似於mutation,不一樣在於:

action提交的是mutation,而不是直接更改狀態

action能夠包含任意異步操做

簡單寫法:

import { mapActions } from 'vuex'

methods: {

  ...mapActions(['updateAgeAsync'])

}

mounted: function () {

  this.updateAgeAsync({

    age: 12,

    time: 2000

  })

}

 

模塊

state

使用方法

相關文章
相關標籤/搜索