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.Draggable使用文档超详细总结

    Vue.draggable使用文档超详细总结 介绍 Vue.draggable是一个基于Sortable.js实现的Vue.js拖放库。它允许您在应用程序中轻松创建可拖放的UI组件,同时提供许多配置选项,使您能够自定义拖动行为。以下是Vue.draggable提供的主要功能: 支持嵌套列表和树形结构 支持拖放元素并在不同列表之间排序 支持组件自定义渲染以及自…

    Vue 2023年5月27日
    00
  • 一篇文章带你了解vue路由

    一篇文章带你了解Vue路由 什么是Vue路由 Vue路由管理的是Vue应用程序中的页面导航,它是Vue框架中的一个重要组件。在单页应用程序中,页面的切换并不会引起浏览器刷新,这一过程是通过Vue路由来完成的。 Vue路由的实现原理是在应用程序中添加观察者模式,当用户进行页面导航时,Vue路由会根据用户的请求,实时更新页面内容,并将导航历史记录添加到浏览器的历…

    Vue 2023年5月27日
    00
  • Vue.js实现可排序的表格组件功能示例

    当我们开发一些管理性质的网站时,表格是非常基本的需求。常见的表格功能有分页、排序、搜索等,其中销售额这类的表格,排序功能尤其重要。 Vue.js是一种渐进式JavaScript框架,具有轻量级、高效率、易上手等优点,因此成为了前端开发中的热门工具。下面介绍如何通过Vue.js实现可排序的表格组件功能示例。 第一步:拆分组件 首先将一个整体的表格组件拆分成多个…

    Vue 2023年5月29日
    00
  • vue如何动态加载组件详解

    下面我将详细讲解“vue如何动态加载组件”的攻略。 一、为什么需要动态加载组件? 在一些大型项目中,为了提高页面加载速度和减小打包体积,有时候会将某些组件按需动态加载。这时候如果使用Vue的公共组件库,需要对这些组件进行动态加载。 二、基本实现思路 在Vue中,动态加载组件的实现思路主要有两种方式: 1.通过动态import的方式 动态import的方式是指…

    Vue 2023年5月28日
    00
  • 一起写一个即插即用的Vue Loading插件实现

    下面是“一起写一个即插即用的Vue Loading插件实现”的完整攻略。 确定插件的使用方式和效果 首先要确定我们的插件要如何使用以及要实现的效果。在这个过程中,需要考虑以下几个方面: 插件的使用方式:Vue插件可以通过 Vue.use() 方法进行安装,因此我们需要确定插件的安装方式和参数。 插件的效果:我们的Vue Loading插件需要实现的效果是,在…

    Vue 2023年5月29日
    00
  • vue源码入口文件分析(推荐)

    为了分析 Vue 的源码,我们需要先从入口文件开始。Vue 的入口文件在 src/platform/web/entry-runtime-with-compiler.js 中。 1. 入口文件的基本结构 入口文件主要做了以下几个事情: 定义了 Vue 构造函数。 重写了 Vue.prototype._init 方法。 定义了 $mount 方法。 扩展了 Vu…

    Vue 2023年5月28日
    00
  • Vue如何获取两个时间点之间的所有间隔时间

    要获取两个时间点之间的所有间隔时间,可以使用Vue.js的Moment.js插件。 步骤一:使用Moment.js 首先,需要在Vue项目中安装Moment.js。可以使用npm安装Moment.js: npm install moment –save 然后在Vue项目的JavaScript文件中引入Moment.js: import moment fro…

    Vue 2023年5月27日
    00
  • Vue组件间数据传递的方式(3种)

    Vue组件间数据传递的方式有以下三种: 1. props 与 events 使用props将数据从父组件传递到子组件,使用events将数据从子组件传递到父组件。 父组件传递数据给子组件 在父组件中,可以通过在子组件中使用props属性传递数据。props属性是一个数组,其中包含子组件中要接收的属性名。 <template> <div&gt…

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