[Vuex系列] - Vuex中的getter的用法

王小端coder發表於2019-04-24

Vuex 允許我們在store中定義“getter”(可以認為是store的計算屬性)。就像計算屬性一樣,getter的返回值會根據它的依賴被快取起來,且只有當它的依賴值發生了改變才會被重新計算。

getters的作用

對於getters的理解主要作用是對state屬性進行計算,可以理解類似於Vue中computed。接下來讓我通過一個例子如何使用這兩個功能的。

還是以我們上一講的累加器為例,在getter.js中增加getCount,內容如下:

const getters = {
  getNum (state) {
    return state.num
  },
  getCount (state) {
    return state.count
  }
}

export default getters

複製程式碼

在元件中如何使用

<template>
  <div class="getter">
    {{ count }}
    <button @click="add">ADD State</button>
  </div>
</template>

<script>
export default {
  data () {
    return {}
  },
  computed: {
    count () {
      return this.$store.getters.getCount
    }
  },
  methods: {
    add () {
      this.$store.commit('add')
    }
  }
}
</script>

複製程式碼

this.$store呼叫

this.$store.getters.getCount
複製程式碼

引用store來呼叫

import store from '@/store/store.js'

store.getters.getCount
複製程式碼

mapGetters 輔助函式

<template>
  <div class="getter">
    {{ getCount }}
    <button @click="add">ADD State</button>
  </div>
</template>

<script>
import { mapGetters } from 'vuex'
export default {
  data () {
    return {}
  },
  computed: {
    ...mapGetters(['getCount'])
  },
  methods: {
    add () {
      this.$store.commit('add')
    }
  }
}
</script>
複製程式碼

一、[Vuex系列] - 初嘗Vuex第一個例子

二、[Vuex系列] - 細說state的幾種用法

三、[Vuex系列] - Mutation的具體用法

四、[Vuex系列] - getters的用法

五、[Vuex系列] - Actions的理解之我見

六、[Vuex系列] - Module的用法(終篇)


相關文章