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

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 element实现将表格单行数据导出为excel格式流程详解

    下面是关于“vue element实现将表格单行数据导出为excel格式流程详解”的攻略,包含了完整的代码和实现流程。 1. 安装所需工具 首先,我们需要安装一些工具,包括: vue – 一个流行的JavaScript框架 element-ui – 一个基于vue的UI组件框架 xlsx – 一个用于处理Excel文件的JavaScript库 你可以使用以下…

    Vue 2023年5月27日
    00
  • Vue data的数据响应式到底是如何实现的

    那么让我们来详细讲解一下Vue data的数据响应式实现的攻略。 什么是Vue数据响应式? Vue框架的核心功能之一就是数据响应式。所谓数据响应式,是指当Vue中的某个数据发生变化时,框架可以自动更新依赖这个数据的视图。 Vue数据响应式的实现原理 Vue数据响应式的实现原理主要包括两部分: Object.defineProperty Vue数据响应式是通过…

    Vue 2023年5月27日
    00
  • vuex的辅助函数该如何使用

    Vuex是一个专为Vue.js应用程序开发的状态管理模式。Vuex的辅助函数提供了一种简化使用Vuex的方法。本文将详细介绍Vuex辅助函数的使用方法,以及两个示例的说明。 关于Vuex辅助函数 Vuex的辅助函数本质上是基于Vuex Store的全局getState、commit、dispatch和mapState、mapGetters、mapMutati…

    Vue 2023年5月28日
    00
  • vue新玩法VueUse工具库具体用法@vueuse/core详解

    VueUse工具库详解 什么是VueUse工具库 VueUse是一个基于Vue3的工具库,旨在提供许多实用功能用于开发Vue应用程序。它由一系列的模块组成,每个模块都集成了一组相关功能。例如:表单,状态,副作用等,而这些模块均提供了许多工具函数和hooks,您可以在Vue3项目中使用它们来轻松完成特定任务。 如何使用VueUse 通常,您可以通过npm安装V…

    Vue 2023年5月27日
    00
  • vue实现PC端录音功能的实例代码

    Vue实现PC端录音功能的实例代码需要通过JS录音库来实现,常用的开源录音库有Recorder.js和RecordRTC,这两个库都可以用于Vue项目的录音。 下面是实现步骤及示例代码: 步骤一:安装录音库 使用npm安装Recorder.js或RecordRTC npm install recorderjs npm install recordrtc 步骤…

    Vue 2023年5月28日
    00
  • Vue表单输入绑定的示例代码

    Vue表单输入绑定是Vue.js框架中的一个非常常用的功能,它可以让你通过双向数据绑定的方式更加轻松地处理表单输入和提交。 下面,我将为你展示Vue表单输入绑定的完整攻略,包括示例代码和说明。 示例代码 首先,我们来看一个简单的示例代码,该代码展示了如何使用v-model指令将表单输入与Vue实例中的数据进行绑定: <div id="app&…

    Vue 2023年5月27日
    00
  • vue-cli3添加模式配置多环境变量的方法

    介绍:vue-cli 3 是 Vue 官方提供的脚手架工具,使用 vue-cli3 可以快速搭建 Vue 项目,添加模式配置多环境变量,常用于项目的部署环境切换、前后端资源访问地址等的切换。本篇攻略介绍 vue-cli3 添加模式配置多环境变量的方法,包括两种示例说明。 准备工作 在使用 vue-cli3 添加模式配置多环境变量之前我们需要准备以下环境和工具…

    Vue 2023年5月28日
    00
  • 配置vue全局方法的两种方式实例

    当我们在使用 Vue.js 开发时,我们经常需要在多个组件中使用同一个方法,这时候可以将这个方法作为全局方法。Vue.js 提供了两种方式来配置全局方法。 1.通过 Vue.prototype 实现全局方法 在 Vue.js 初始化时可以通过 Vue.prototype 给 Vue 实例添加自定义属性。通过 Object.defineProperty 实现这…

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