真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

如何在Vuex中使用getters屬性

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

在和靜等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供做網(wǎng)站、網(wǎng)站制作 網(wǎng)站設(shè)計制作定制網(wǎng)站,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站設(shè)計,成都營銷網(wǎng)站建設(shè),成都外貿(mào)網(wǎng)站建設(shè),和靜網(wǎng)站建設(shè)費用合理。

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

  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不允許重復(fù),否則會報錯
     return
    }
    store._wrappedGetters[getterKey] = function `wrappedGetter` (store{
      // 將每一個getter包裝成一個方法,并且添加到store._wrappedGetters對象中,
      return rawGetter(
       //執(zhí)行g(shù)etter的回調(diào)函數(shù),傳入三個參數(shù),(local state,store getters,rootState)
      getNestedState(store.state, modulePath), // local state
       //根據(jù)path查找state上嵌套的state 
      store.getters, 
        // store上所有的getters
      store.state 
         // root state)}}) 
   }
   
   //根據(jù)path查找state上嵌套的state 
  function `getNestedState` (state, path) {
     return path.length
      ? path.reduce((state, key) => state[key], state): state}

1 應(yīng)用場景

假設(shè)我們在 Vuex 中定義了一個數(shù)組:

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

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


效果:

如何在Vuex中使用getters屬性

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

2 基礎(chǔ)用法

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:

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

3 內(nèi)部依賴

getter 可以依賴其它已經(jīng)定義好的 getter。比如我們需要統(tǒng)計過濾后的列表數(shù)量,就可以依賴之前定義好的過濾函數(shù)。

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:



效果:

如何在Vuex中使用getters屬性

上述內(nèi)容就是如何在Vuex中使用getters屬性,你們學(xué)到知識或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識儲備,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。


新聞名稱:如何在Vuex中使用getters屬性
URL地址:http://weahome.cn/article/igjhps.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部