vuex 中辅助函数mapGetters的基本用法详解

yizhihongxing

vuex 中辅助函数 mapGetters 的基本用法详解

简介

Vuex 中, state 存储着应用中的单一状态树。可以通过 store.state 来获取状态树中的属性。

但是,在有一些情况下,我们需要从 state 中派生一些状态,例如,过滤一些数据或者对数据进行计算,这时可以使用 Getter。Vuex 可以通过 Getter 快速派生出一些状态数据。

在使用 Getter 这个函数的时候,我们可以通过 mapGetters 这个辅助函数直接在 component 中引用。

mapGetters 的使用

使用方式

在 component 中引入方式如下:

import { mapGetters } from 'vuex'

定义计算属性的对象,从而对 state 进行计算转换。这里我比较习惯去定义一个对象,将计算属性全部包含在这个对象中。

computed: {
  ...mapGetters([
    'showContent',  
    'hideContent'   
  ])
}

这里的 mapGetters 接受一个数组,而数组中每个值经过计算之后,就会包裹在 computed 的对象里面。注意,这里是两个字符串,它们代表的意义在下面会讲述。

mapGetters 示例

这里,我们以一个简单的购物车为例子,讲解 mapGetters 的使用。

购物车大模块

我们在store目录下定义了 cart.js 文件。

// store/cart.js
export default {
  state: {
    cartList: [
      {
        id: 1,
        name: 'apple',
        price: 10,
        quantity: 2
      },
      {
        id: 2,
        name: 'banana',
        price: 15,
        quantity: 3
      }]
  },
  getters: {
    cartCount: state => {
      return state.cartList.reduce((sum, item) => sum + item.quantity, 0)
    },
    cartTotal: state => {
      return state.cartList.reduce((sum, item) => sum + item.price * item.quantity, 0)
    }
  }
}

其中,我们定义了一个 state 与 两个 getter 方法,分别是 cartCount 和 cartTotal。

购物车小模块: Shop.vue

在 Shop 组件中,我们要用到这两个方法,用现代方法引入 mapGetters,如下所示

// components/Shop.vue
import { mapGetters } from 'vuex';
export default {
  name: 'Shopping',
  computed: {
    ...mapGetters([
      'cartCount',
      'cartTotal'
    ])
  }
}

接下来,我们就可以在 template 中直接使用这两个方法了。

// components/Shop.vue
<template>
  <div class="shopping">
    <ul>
      <li v-for="(item, index) in cart" :key="index">
        <div>{{ item.name }}</div>
        <div>{{ item.price }}</div>
        <div>{{ item.quantity }}</div>
      </li>
    </ul>
    <p>已选购数量: {{ cartCount }} 个</p>
    <p>总价: {{ cartTotal }} 元</p>
  </div>
</template>

这里我们可以看到,mapGetters 的基本用法就是:

首先先导入 mapGetters 从 vuex 中

其次,将需要的 getter 方法放到 computed 的对象中,这个时候,它们就像普通的计算属性一样被 Vue 所看待。

在 template 中, 直接像使用 data 中的属性一样,访问我们定义好的 getter。

总结

利用 mapGetters 这个辅助函数可以帮助我们在组件中使用 getter 方法更加的便捷,同时避免了在 component 中书写大量重复模板代码的问题。可以有效提高开发效率。

同时在使用的时候,特别提醒大家,最好是将 getter 放在一个专门的文件夹下管理。这样在使用的时候极为方便。

除此之外,如果你对组件中还有其他的 options,千万不要忘记使用扩展符讲这些是能够平稳输出到 component 中的 computed 选项中。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:vuex 中辅助函数mapGetters的基本用法详解 - Python技术站

(0)
上一篇 2023年5月28日
下一篇 2023年5月28日

相关文章

  • 使用vue-aplayer插件时出现的问题的解决

    使用vue-aplayer插件时出现问题的解决攻略: 1. 安装vue-aplayer插件 在项目中使用vue-aplayer插件时,首先需要通过npm安装该插件。 npm install vue-aplayer –save 2. 引入vue-aplayer插件 在Vue项目中,需要在main.js中引入vue-aplayer插件。 import Vue …

    Vue 2023年5月27日
    00
  • vue.js的状态管理vuex中store的使用详解

    Vue.js的状态管理:Vuex中store的使用详解 在大型Vue.js应用程序中,管理组件之间的状态可能会变得异常困难。为了解决这个问题,Vue.js提供了一个专门的状态管理库——Vuex。 在Vuex中,store是状态集合,包含了你的应用程序中所有组件的状态。store使用一个单一的数据源来管理组件之间的通讯,其中的数据可以在整个应用程序中被访问和修…

    Vue 2023年5月27日
    00
  • 详解Vue自定义指令及使用

    详解Vue自定义指令及使用 什么是Vue自定义指令? Vue自定义指令是一种可以用来扩展Vue.js的功能的语法,它可以让我们自定义一些指令,以实现一些特定的交互效果、操作等。Vue自带了一些常用指令比如v-if、v-show等,但在实际业务开发中,有时还需要自定义指令来满足特定的需求。 自定义指令一般由两个部分组成:指令注册和指令函数。 如何注册自定义指令…

    Vue 2023年5月28日
    00
  • 几个你不知道的技巧助你写出更优雅的vue.js代码

    下面是关于“几个你不知道的技巧助你写出更优雅的vue.js代码”的完整攻略,包括以下方面: 使用 Vue.js 官方插件 Vue.js 团队开发并维护了一系列的插件,这些插件可以帮助你更加方便地开发和调试 Vue.js 应用。其中,最常用的插件是 Vue.js Devtools,它提供了一些实用的功能,例如调试工具、性能分析、检查组件等。除此之外,还有 Vu…

    Vue 2023年5月29日
    00
  • 如何在vue中使用pdfjs预览pdf文件

    下面是“如何在Vue中使用pdf.js预览pdf文件”的完整攻略。 安装pdf.js 首先,我们需要安装pdf.js。可以通过以下命令来安装: npm install pdfjs-dist 使用pdf.js渲染pdf文件 在Vue组件中引入pdf.js和样式文件: import pdfjsLib from ‘pdfjs-dist’; import ‘pdfj…

    Vue 2023年5月28日
    00
  • Vue3关于响应式数据类型详解(ref、reactive、toRef、及toRefs)

    Vue 3是Vue.js框架的最新版本,Vue 3对Vue.js响应式系统进行了重构,引入了一些新特性。在Vue 3中,我们可以使用以下概念来定义响应式数据类型:ref、reactive、toRef、toRefs。 ref ref是Vue 3中的一个响应式数据类型,它可以将一个基本类型的值(如字符串、数字、布尔值)封装成一个响应式对象,从而使这个基本类型的值…

    Vue 2023年5月28日
    00
  • vue跳转同一个组件,参数不同,页面接收值只接收一次的解决方法

    针对“vue跳转同一个组件,参数不同,页面接收值只接收一次”的问题,我们可以采用以下两种解决方案: 方案一:使用watch监听$route变化 这种方式需要在组件的created或mounted生命周期中,监听vue-router的$route对象。如下所示: <template> <div> <p>{{ message …

    Vue 2023年5月27日
    00
  • 从零开始用webpack构建一个vue3.0项目工程的实现

    下面我来详细讲解“从零开始用webpack构建一个vue3.0项目工程的实现”的完整攻略。 1. 安装webpack和vue-cli 首先需要安装Node.js和npm,然后可以使用npm安装webpack和vue-cli。 在终端中执行以下命令: npm install webpack webapck-cli -g npm install -g @vue/…

    Vue 2023年5月28日
    00
合作推广
合作推广
分享本页
返回顶部