91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何在Vuex中使用getters屬性

發布時間:2021-04-01 17:59:01 來源:億速云 閱讀:423 作者:Leah 欄目:web開發

本篇文章為大家展示了如何在Vuex中使用getters屬性,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

wrapGetters初始化getters,接受3個參數,store表示當前的Store實例,moduleGetters當前模塊下所有的getters,modulePath對應模塊的路徑

  function `wrapGetters` (store, moduleGetters, modulePath) {
   Object.keys(moduleGetters).forEach(getterKey => {
      // 遍歷先所有的getters
    const rawGetter = moduleGetters[getterKey]
    if (store._wrappedGetters[getterKey]) {
     console.error(`[vuex] duplicate getter key: ${getterKey}`)
      // getter的key不允許重復,否則會報錯
     return
    }
    store._wrappedGetters[getterKey] = function `wrappedGetter` (store{
      // 將每一個getter包裝成一個方法,并且添加到store._wrappedGetters對象中,
      return rawGetter(
       //執行getter的回調函數,傳入三個參數,(local state,store getters,rootState)
      getNestedState(store.state, modulePath), // local state
       //根據path查找state上嵌套的state 
      store.getters, 
        // store上所有的getters
      store.state 
         // root state)}}) 
   }
   
   //根據path查找state上嵌套的state 
  function `getNestedState` (state, path) {
     return path.length
      ? path.reduce((state, key) => state[key], state): state}

1 應用場景

假設我們在 Vuex 中定義了一個數組:

const store = new Vuex.Store({
  state: {
    list:[1,3,5,7,9,20,30]
  }
 ...
})

業務場景希望過濾出大于 5 的數。馬上想到的方法可能的是:在組件的計算屬性中進行過濾:

<template>
  <div>
    {{list}}
  </div>
</template>
<script>
  export default {
    name: "index.vue",
    computed: {
      list() {
        return this.$store.state.list.filter(item => item > 5);
      }
    }
 }
</script>

效果:

如何在Vuex中使用getters屬性

功能雖然實現了,但如果其它組件也需要過濾后的數據,那么就得把 index.vue 中的計算過濾代碼復制出來。如果過濾規則發生變化,還得一一修改這些組件中的計算屬性,很難維護。這種場景下,我們就可以使用 getters 屬性啦O(∩_∩)O~

2 基礎用法

main.js:

const store = new Vuex.Store({
  state: {
    list: [1, 3, 5, 7, 9, 20, 30]
  },
  getters: {
    filteredList: state => {
      return state.list.filter(item => item > 5)
    }
  }
})

index.vue:

<script>
  export default {
    name: "index.vue",
    computed: {
      list() {
        return this.$store.getters.filteredList;
      }
    }
  }
</script>

效果達到了,而且只需要在一處維護過濾規則即可。

3 內部依賴

getter 可以依賴其它已經定義好的 getter。比如我們需要統計過濾后的列表數量,就可以依賴之前定義好的過濾函數。

main.js:

const store = new Vuex.Store({
  state: {
    list: [1, 3, 5, 7, 9, 20, 30]
  },
  getters: {
    filteredList: state => {
      return state.list.filter(item => item > 5)
    },
    listCount: (state, getters) => {
      return getters.filteredList.length;
    }
  }
})

index.vue:

<template>

  <div>
    過濾后的列表:{{list}}
    <br>
    列表長度:{{listCount}}
  </div>
</template>

<script>
  export default {
    name: "index.vue",
    computed: {
      list() {
        return this.$store.getters.filteredList;
      },
      listCount() {
        return this.$store.getters.listCount;
      }
    }
  }
</script>

效果:

如何在Vuex中使用getters屬性

上述內容就是如何在Vuex中使用getters屬性,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

措美县| 赞皇县| 获嘉县| 兴国县| 灌云县| 江陵县| 渑池县| 横峰县| 仪陇县| 比如县| 财经| 抚顺市| 井冈山市| 阜宁县| 苏尼特右旗| 定南县| 大田县| 宁国市| 五寨县| 庆阳市| 儋州市| 绥中县| 双流县| 洪江市| 贵南县| 南丰县| 大理市| 禄丰县| 汕头市| 宁明县| 屯留县| 明水县| 济宁市| 浮山县| 永嘉县| 天等县| 黄冈市| 永寿县| 紫金县| 全州县| 滁州市|