最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解Vuex中g(shù)etters的使用教程

 更新時(shí)間:2022年01月28日 08:56:01   作者:IT利刃出鞘  
在Store倉(cāng)庫(kù)里,state就是用來(lái)存放數(shù)據(jù)。如果很多組件都使用這個(gè)過(guò)濾后的數(shù)據(jù),我們是否可以把這個(gè)數(shù)據(jù)抽提出來(lái)共享?這就是getters存在的意義。我們可以認(rèn)為,getters是store的計(jì)算屬性。本文將具體介紹一下getters的使用教程,需要的可以參考一下

簡(jiǎn)介

說(shuō)明

本文用示例介紹Vuex的五大核心之一:getters。

官網(wǎng)

Getter | Vuex

API 參考 | Vuex

getters概述

說(shuō)明

getters 是Store的計(jì)算屬性,可以對(duì)State進(jìn)行計(jì)算操作。就像計(jì)算屬性一樣,getter 的返回值會(huì)根據(jù)它的依賴(lài)被緩存起來(lái),且只有當(dāng)它的依賴(lài)值發(fā)生了改變才會(huì)被重新計(jì)算。

雖然組件內(nèi)也可以做計(jì)算屬性,但getters 可以在多組件之間復(fù)用。如果一個(gè)狀態(tài)只在一個(gè)組件內(nèi)使用,可以不用getters。

來(lái)源

有時(shí)我們需要從 store 中的 state 中派生出一些狀態(tài),例如對(duì)列表進(jìn)行過(guò)濾并計(jì)數(shù):

computed: {
  doneTodosCount () {
    return this.$store.state.todos.filter(todo => todo.done).length
  }
}

如果有多個(gè)組件需要用到此屬性,我們要么復(fù)制這個(gè)函數(shù),或者抽取到一個(gè)共享函數(shù)然后在多處導(dǎo)入它(無(wú)論哪種方式都不是很理想)。getter就是為了解決這個(gè)問(wèn)題而產(chǎn)生的。

用法

直接使用

this.$store.getters.計(jì)算屬性名           // 不分模塊
this.$store.getters['模塊名/計(jì)算屬性名'] // 分模塊

mapGetters

import { mapGetters } from 'vuex'
export default {
    computed: {
        // 不分模塊
        ...mapGetters(['計(jì)算屬性名'])
        
        // 分模塊,不重命名計(jì)算屬性
        ...mapGetters('模塊名', ['計(jì)算屬性名'])
        
        // 分模塊,重命名計(jì)算屬性
        ...mapGetters('模塊名', {'新計(jì)算屬性名': '舊計(jì)算屬性名'})
    }
}

示例

代碼

CouterStore.js

import Vue from 'vue';
import Vuex from 'vuex';
 
Vue.use(Vuex);
const counterStore = new Vuex.Store(
    {
        state: {
            count: 10
        },
 
        getters: {
            doubleCount(state) {
                return state.count * 2;
            }
        }
    }
);
 
export default counterStore;

Parent.vue

<template>
  <div class="outer">
    <h3>父組件</h3>
    <component-b></component-b>
  </div>
</template>
 
<script>
import ComponentB from "./ComponentB";
 
export default {
  name: 'Parent',
  components: {ComponentB},
}
</script>
 
<style scoped>
.outer {
  margin: 20px;
  border: 2px solid red;
  padding: 20px;
}
</style>

ComponentB.vue

<template>
  <div class="container">
    <h3>ComponentB</h3>
    <div>計(jì)數(shù)器的值:{{thisCount}}</div>
    <div>計(jì)數(shù)器的2倍:{{thisDoubleCount}}</div>
  </div>
</template>
 
<script>
export default {
  computed:{
    thisCount() {
      return this.$store.state.count;
    },
    thisDoubleCount() {
      return this.$store.getters.doubleCount;
    },
  }
}
</script>
 
<style scoped>
.container {
  margin: 20px;
  border: 2px solid blue;
  padding: 20px;
}
</style>

路由(router/index.js)

import Vue from 'vue'
import Router from 'vue-router'
import Parent from "../components/Parent";
 
Vue.use(Router)
 
export default new Router({
  routes: [
    {
      path: '/parent',
      name: 'Parent',
      component: Parent,
    }
  ],
})

測(cè)試

訪問(wèn):http://localhost:8080/#/parent

到此這篇關(guān)于詳解Vuex中g(shù)etters的使用教程的文章就介紹到這了,更多相關(guān)Vuex getters內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 詳解vue.js數(shù)據(jù)傳遞以及數(shù)據(jù)分發(fā)slot

    詳解vue.js數(shù)據(jù)傳遞以及數(shù)據(jù)分發(fā)slot

    本篇文章給大家通過(guò)代碼實(shí)例分析了vue.js數(shù)據(jù)傳遞以及數(shù)據(jù)分發(fā)slot的相關(guān)知識(shí),有這方面興趣的朋友參考下吧。
    2018-01-01
  • vue radio單選框,獲取當(dāng)前項(xiàng)(每一項(xiàng))的value值操作

    vue radio單選框,獲取當(dāng)前項(xiàng)(每一項(xiàng))的value值操作

    這篇文章主要介紹了vue radio單選框,獲取當(dāng)前項(xiàng)(每一項(xiàng))的value值操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-09-09
  • 基于Vue3+ts封裝一個(gè)簡(jiǎn)單版的Message組件

    基于Vue3+ts封裝一個(gè)簡(jiǎn)單版的Message組件

    近日項(xiàng)目中需要使用信息提示框的功能,ui組件庫(kù)使用的是字節(jié)的arco-design-vue,看了一下,現(xiàn)有的Message不滿足要是需求,直接使用message組件的話,改樣式太麻煩,所以本文就本就介紹了基于Vue3+ts封裝一個(gè)簡(jiǎn)單版的Message組件,需要的朋友可以參考下
    2023-09-09
  • Vue關(guān)鍵字搜索功能實(shí)戰(zhàn)小案例

    Vue關(guān)鍵字搜索功能實(shí)戰(zhàn)小案例

    在vue項(xiàng)目中,搜索功能是我們經(jīng)常需要使用的一個(gè)場(chǎng)景,下面這篇文章主要給大家介紹了關(guān)于Vue關(guān)鍵字搜索功能的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-06-06
  • Vue常用的修飾符及應(yīng)用場(chǎng)景解讀

    Vue常用的修飾符及應(yīng)用場(chǎng)景解讀

    這篇文章主要介紹了Vue常用的修飾符及應(yīng)用場(chǎng)景解讀,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • vue3??mark.js?實(shí)現(xiàn)文字標(biāo)注功能(案例代碼)

    vue3??mark.js?實(shí)現(xiàn)文字標(biāo)注功能(案例代碼)

    這篇文章主要介紹了vue3??mark.js?實(shí)現(xiàn)文字標(biāo)注功能,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-09-09
  • vue3使用ref 獲取不到子組件屬性問(wèn)題的解決辦法

    vue3使用ref 獲取不到子組件屬性問(wèn)題的解決辦法

    父子組件使用<script setup>語(yǔ)法糖,父組件通過(guò)給子組件定義ref訪問(wèn)子組件內(nèi)部屬性或事件,本文給大家介紹了解決vue3使用ref 獲取不到子組件屬性問(wèn)題,文中通過(guò)代碼示例講解的非常詳細(xì),需要的朋友可以參考下
    2024-06-06
  • vue開(kāi)發(fā)中如何在js文件里使用pinia和組件同步

    vue開(kāi)發(fā)中如何在js文件里使用pinia和組件同步

    在JavaScript文件中封裝涉及到使用Pinia的方法時(shí),發(fā)現(xiàn)Pinia和組件內(nèi)容并不同步,二者的狀態(tài)是獨(dú)立的,解決辦法是,在新建對(duì)象的時(shí)候,將Pinia作為參數(shù)傳入,本文給大家介紹vue開(kāi)發(fā)中如何在js文件里使用pinia和組件同步,感興趣的朋友一起看看吧
    2024-10-10
  • Vue常用的幾個(gè)指令附完整案例

    Vue常用的幾個(gè)指令附完整案例

    越來(lái)越多的人在用Vue,剛開(kāi)始接觸vue的話常接觸的指令就幾個(gè),統(tǒng)一歸納一下。感興趣的朋友跟隨小編一起看看吧
    2018-11-11
  • Vue中組件(Component)和插件(Plugin)的區(qū)別及說(shuō)明

    Vue中組件(Component)和插件(Plugin)的區(qū)別及說(shuō)明

    這篇文章主要介紹了Vue中組件(Component)和插件(Plugin)的區(qū)別及說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-04-04

最新評(píng)論

福贡县| 阳西县| 武冈市| 通江县| 大冶市| 西安市| 遵化市| 常州市| 新干县| 临沭县| 册亨县| 清远市| 新乡市| 犍为县| 正安县| 麻栗坡县| 临潭县| 郎溪县| 鄂托克旗| 西丰县| 岗巴县| 克拉玛依市| 锡林郭勒盟| 公主岭市| 灵石县| 彭山县| 汤原县| 宁陕县| 若尔盖县| 宁波市| 仁布县| 长岭县| 高要市| 沽源县| 亳州市| 当雄县| 武强县| 资溪县| 大竹县| 嘉黎县| SHOW|