欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

簡介

說明

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

官網(wǎng)

Getter | Vuex

API 參考 | Vuex

getters概述

說明

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

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

來源

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

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

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

用法

直接使用

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

mapGetters

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

示例

代碼

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>計數(shù)器的值:{{thisCount}}</div>
    <div>計數(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,
    }
  ],
})

測試

訪問:http://localhost:8080/#/parent

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

相關(guān)文章

  • Vue中的nextTick作用和幾個簡單的使用場景

    Vue中的nextTick作用和幾個簡單的使用場景

    這篇文章主要介紹了Vue中的nextTick作用和幾個簡單的使用場景,幫助大家更好的理解和使用vue框架,感興趣的朋友可以了解下
    2021-01-01
  • vue關(guān)閉eslint檢查的方式

    vue關(guān)閉eslint檢查的方式

    這篇文章主要介紹了vue關(guān)閉eslint檢查的方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • 手寫Vue2.0 數(shù)據(jù)劫持的示例

    手寫Vue2.0 數(shù)據(jù)劫持的示例

    這篇文章主要介紹了手寫Vue2.0 數(shù)據(jù)劫持的示例,幫助大家更好的理解和學(xué)習(xí)使用vue框架,感興趣的朋友可以了解下
    2021-03-03
  • element-ui?table表格控件實現(xiàn)單選功能代碼實例

    element-ui?table表格控件實現(xiàn)單選功能代碼實例

    這篇文章主要給大家介紹了關(guān)于element-ui?table表格控件實現(xiàn)單選功能的相關(guān)資料,單選框是指在?Element?UI?的表格組件中,可以通過單選框來選擇一行數(shù)據(jù)。用戶只能選擇一行數(shù)據(jù),而不能同時選擇多行,需要的朋友可以參考下
    2023-09-09
  • Vue中this.$router和this.$route的區(qū)別及push()方法

    Vue中this.$router和this.$route的區(qū)別及push()方法

    這篇文章主要給大家介紹了關(guān)于Vue中this.$router和this.$route的區(qū)別及push()方法的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-05-05
  • 淺談Vue3的幾個優(yōu)勢

    淺談Vue3的幾個優(yōu)勢

    這篇文章主要給大家分享的是Vue3的幾個優(yōu)勢,Vue3仍然在源碼、性能和語法 API 三個大的方面進(jìn)行了優(yōu)化,下面我們一起進(jìn)入文章看看具體詳情吧
    2021-10-10
  • Vite3 Svelte3構(gòu)建Web應(yīng)用報錯process is not defined

    Vite3 Svelte3構(gòu)建Web應(yīng)用報錯process is not def

    這篇文章主要介紹了Vite3 Svelte3構(gòu)建Web應(yīng)用報錯:'process is not defined'解決方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-06-06
  • 創(chuàng)建和運行Vue.js項目方法demo

    創(chuàng)建和運行Vue.js項目方法demo

    這篇文章主要為大家介紹了創(chuàng)建和運行Vue.js項目方法demo,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12
  • vue-router的鉤子函數(shù)用法實例分析

    vue-router的鉤子函數(shù)用法實例分析

    這篇文章主要介紹了vue-router的鉤子函數(shù)用法,結(jié)合實例形式分析了vue路由鉤子分類及vue-router鉤子函數(shù)相關(guān)使用技巧,需要的朋友可以參考下
    2019-10-10
  • 解決vue-cli + webpack 新建項目出錯的問題

    解決vue-cli + webpack 新建項目出錯的問題

    下面小編就為大家分享一篇解決vue-cli + webpack 新建項目出錯的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-03-03

最新評論