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

溫馨提示×

溫馨提示×

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

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

VUEX getters計算屬性如何使用

發布時間:2022-08-10 16:59:29 來源:億速云 閱讀:174 作者:iii 欄目:編程語言

本篇內容介紹了“VUEX getters計算屬性如何使用”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

VUEX getters計算屬性如何使用

考慮到其他頁面也許也會用到這種邏輯計算,所有可以使用getters 屬性將其管理起來

   getters:{
    //里面會傳過來一些參數state
    totalPrice(state){
         let  totalPrice=0 //默認0
         for(const book of state.books){ //對這個數組做一個遍歷
            totalPrice+=books.count * books.price
         }
         return totalPrice
    }
   },

頁面如果使用直接調取這個函數就可以了

  <p>總價值:{{$store.getters.totalPrice}}</p>

關于getters  其他講解

(1)關于getters 第二個參數,作用是調用getters 里面的其他函數

VUEX getters計算屬性如何使用

爭對視圖中的數據做一個簡化

vue2 的普通方式getters 在 optionsAPI 中的一個使用

<template>
    <div>
    <p>總價值:{{totalPrice}}</p>
    </div>
</template>
<script>
import {useStore} from 'vuex'
    export default {
     computed:{
         totalPrice(){
             this.$store.getters.totalPrice
       }
     } 
    }
</script>

vue2 getters 增強方式

如果我們界面需要太多的數據展示的話,就需要在computed 里面寫很多的邏輯函數,那樣我們的代碼量也會變得很大。此時我們可以借助輔助函數  mapGetters  來幫我們實現這些邏輯。

(1)引入我們輔助函數:import {mapGetters} from 'vuex';

(2)在computed 里面使用輔助函數

html:
<template>
    <div>
    <p>總價值:{{totalPrice}}</p>
      <p>哈哈哈:{{infoname}}</p>
    </div>
</template>
js:
<script>
// 引入輔助函數
import {mapGetters} from 'vuex'
    export default { 
     computed:{
        //  使用輔助函數
         ...mapGetters(["totalPrice","infoname"])
     }
    }
</script>

vue3:getters 在 compositionAPI 中的一個使用

普通的傳統的方式進行展示:

<template>
    <div>
    <p>{{totalPrice}}</p>
    </div>
</template>
<script>
import {useStore} from 'vuex'
import {computed} from 'vue'
    export default { 
        setup(){
            const useStore=useStore()
            const totalPrice=computed(()=>store.getters.totalPrice)
            return{
             totalPrice
            }
        }
    }
</script>

復雜邏輯層可以使用 輔助函數 mapGetters  來實現,同時也可以封裝成一個hooks,新建一個mapgeters 庫 并且在里面寫入以下代碼

//hook 就是函數而已  這里封裝一些公共的方法
import { computed } from 'vue'
import {mapGetters,useStore} from 'vuex'
export function useGetters(mapper){
// 拿到這個useStore對象
 const store=useStore()
//獲取到對應的對象的functions:{name:function,age:function,height:function}
 const storeStateFns=mapGetters(mapper) //這里需要到時候用戶傳入的數組
//對數據進行轉換
const storegetters={}//現在全部轉成{name:ref,age:ref,height:ref放在這個里面了}
// 遍歷拿到我們的key
Object.keys(storeStateFns).forEach(fnKey=>{
    //取出具體的函數
    const fn=storeStateFns[fnKey].bind({$store:store}); //這里的store 就是我們拿到的useStore
    //用computed 函數做一個包裹;
     storegetters[fnKey]=computed(fn)
})
return storegetters
}

頁面使用方法:

<template>
    <div>
    <p>{{totalPrice}}</p>
    </div>
</template>
<script>
import {useGetters} from '../hooks/hook'
import{useStore} from 'vuex'
    export default { 
        setup(){
            const useGetters=useGetters(["totalPrice","nameIfo"])
            return{
           ...useGetters
            }
        }
    }
</script>

因為前面我們在封裝相對應的hooks 時遇到了相同的代碼,也就是說我們現在可以把相同的代碼繼續抽出來在做一個二次封裝,在hooks 里面在新建一個useMapper.js 在里面寫入

//hook 就是函數而已  這里封裝一些公共的方法
import { computed } from 'vue'
import {useStore} from 'vuex'
export function useMapper(mapper,mapFn){ //mapFn 就是以后要使用放入輔助函數傳進來
// 拿到這個useStore對象
 const store=useStore()
//獲取到對應的對象的functions:{name:function,age:function,height:function}
 const storeStateFns=mapFn(mapper) //注意由于我們這里是二次封裝,所以映射關系不能寫死,
//對數據進行轉換
const storeState={}//現在全部轉成{name:ref,age:ref,height:ref放在這個里面了}
// 遍歷拿到我們的key
Object.keys(storeStateFns).forEach(fnKey=>{
    //取出具體的函數
    const fn=storeStateFns[fnKey].bind({$store:store}); //這里的store 就是我們拿到的useStore
    //用computed 函數做一個包裹;
      storeState[fnKey]=computed(fn)
})
return storeState
}

在在對應的文件引入該公共方法

// 例如:我們現在是在mapGrtters.js 文件中
import {mapGetters} from 'vuex'
import { useMapper } from './useMapper'
export function useGetters(mapper){
    return useMapper(mapper,mapGetters)

}

“VUEX getters計算屬性如何使用”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節
推薦閱讀:
  1. Vuex教程
  2. vuex筆記

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

AI

平远县| 平阴县| 长汀县| 安国市| 平南县| 湘阴县| 莫力| 漳浦县| 合山市| 平谷区| 肇州县| 岐山县| 潼南县| 万安县| 兴海县| 区。| 西青区| 天长市| 卓资县| 安宁市| 集贤县| 绿春县| 青铜峡市| 大连市| 淄博市| 长岛县| 淮阳县| 开封市| 邵东县| 平潭县| 南通市| 鄱阳县| 建平县| 和静县| 榕江县| 琼结县| 若尔盖县| 双峰县| 宁津县| 大化| 聂荣县|