Vue Store Getters全方位解析

一、Vue Store Getters的概念

Vue Store Getters是Vue.js框架中的一个重要概念,它主要用于获取Vuex中的state。在Vuex中,state是存储在store中的一个对象,用于跨组件传递数据的一个储存库。当我们需要获取state中的数据时,可以通过Vuex中的Getter来获取。

Getter是Vuex中的一个计算属性,它的作用是对store中的数据进行计算,返回一个新的值。和Vue中的计算属性类似,Getter也具有缓存功能,只有在它依赖的值更改时才会重新计算。

在实际开发中,Getter通常用于数据过滤、分组、排序等复杂的数据计算场景中。通过在Getter中进行数据处理,我们可以让组件更加简洁,使得Vuex的使用变得更加方便。

二、Vue Store Getters的使用方法

在Vuex中,我们可以通过store对象的getters属性来定义Getter,代码如下:

const store = new Vuex.Store({
  state: {
    todos: [
      { id: 1, text: '...', done: true },
      { id: 2, text: '...', done: false }
    ]
  },
  getters: {
    doneTodos: state => {
      return state.todos.filter(todo => todo.done)
    }
  }
})

在上述代码中,我们通过getters属性定义了一个名为doneTodos的Getter。这个Getter返回的是state.todos中done属性为true的所有项。

使用Getter非常简单,只需要在组件内使用this.$store.getters.doneTodos即可获取到计算得到的值。可以看到,虽然Getter函数接收state作为第一个参数,但我们并不需要显示地调用它,而是像调用一个属性一样使用。

三、Vue Store Getters的依赖

Getter函数可以接受其他Getter作为参数,这就使得我们可以通过组合多个Getter来实现更复杂的计算。在Getter中使用其他Getter非常简单,只需要定义一个函数来接收其他Getter的返回值即可,代码如下:

const store = new Vuex.Store({
  state: {
    todos: [
      { id: 1, text: '...', done: true },
      { id: 2, text: '...', done: false },
      { id: 3, text: '...', done: false }
    ]
  },
  getters: {
    doneTodos: state => {
      return state.todos.filter(todo => todo.done)
    },
    doneTodosCount: (state, getters) => {
      return getters.doneTodos.length
    }
  }
})

在上述代码中,我们定义了一个名为doneTodosCount的Getter,它接收doneTodos作为第二个参数,并返回doneTodos的长度。这意味着当doneTodos发生变化时,doneTodosCount也会重新计算执行,从而保证了Getter的缓存功能。

四、Vue Store Getters的访问方式

Getter的访问方式有两种,一种是通过store对象上的getters属性访问,另外一种是通过mapGetters函数进行访问。按照官方文档中的推荐,我们应该使用后者。

import { mapGetters } from 'vuex'

export default {
  // ...
  computed: {
    ...mapGetters([
      'doneTodos',
      'doneTodosCount'
    ])
  }
}

在上述代码中,我们通过展开运算符和mapGetters函数将doneTodos和doneTodosCount映射到组件的计算属性中,便于我们在组件中访问。这样做的好处在于,我们可以像访问组件内的计算属性一样访问Getter,代码更加简洁易读。

五、Vue Store Getters的使用案例

1、过滤数据

假设我们有一个商品列表,其中包含若干个商品对象。我们希望在展示商品列表的时候,只展示那些价格高于一定阈值的商品。代码如下:

// store.js
const store = new Vuex.Store({
state: {
goods: [
{ id: 1, name: '商品A', price: 20 },
{ id: 2, name: '商品B', price: 30 },
{ id: 3, name: '商品C', price: 25 },
{ id: 4, name: '商品D', price: 40 },
{ id: 5, name: '商品E', price: 15 },
]
},
getters: {
expensiveGoods: state => {
return state.goods.filter(good => good.price > 20)
}
}
})

// component.vue

{{ good.name }}

{{ good.price }}

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/304745.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2025-01-01 11:06
下一篇 2025-01-01 11:06

相关推荐

  • 使用Vue实现前端AES加密并输出为十六进制的方法

    在前端开发中,数据传输的安全性问题十分重要,其中一种保护数据安全的方式是加密。本文将会介绍如何使用Vue框架实现前端AES加密并将加密结果输出为十六进制。 一、AES加密介绍 AE…

    编程 2025-04-29
  • Vue TS工程结构用法介绍

    在本篇文章中,我们将从多个方面对Vue TS工程结构进行详细的阐述,涵盖文件结构、路由配置、组件间通讯、状态管理等内容,并给出对应的代码示例。 一、文件结构 一个好的文件结构可以极…

    编程 2025-04-29
  • Vue3的vue-resource使用教程

    本文将从以下几个方面详细阐述Vue3如何使用vue-resource。 一、安装Vue3和vue-resource 在使用vue-resource前,我们需要先安装Vue3和vue…

    编程 2025-04-27
  • ThinkPHP6 + Vue.js: 不使用Fetch的数据请求方法

    本文将介绍如何在ThinkPHP6和Vue.js中进行数据请求,同时避免使用Fetch函数。 一、AJAX:XMLHttpRequest的基础使用 在进行数据请求时,最基础的方式就…

    编程 2025-04-27
  • Vue模拟按键按下

    本文将从以下几个方面对Vue模拟按键按下进行详细阐述: 一、Vue 模拟按键按下的场景 在前端开发中,我们常常需要模拟按键按下的场景,比如在表单中填写内容后,按下“回车键”提交表单…

    编程 2025-04-27
  • 开发前端程序,Vue是否足够?

    Vue是一个轻量级,高效,渐进式的JavaScript框架,用于构建Web界面。开发人员可以使用Vue轻松完成前端编程,开发响应式应用程序。然而,当涉及到需要更大的生态系统,或利用…

    编程 2025-04-27
  • 如何在Vue中点击清除SetInterval

    在Vue中点击清除SetInterval是常见的需求之一。本文将介绍如何在Vue中进行这个操作。 一、使用setInterval和clearInterval 在Vue中,使用set…

    编程 2025-04-27
  • VueClearable:实现易于清除的Vue输入框

    一、VueClearable基本介绍 VueClearable是一个基于Vue.js开发的易于清除的输入框组件,可以在输入框中添加“清除”按钮,使得用户可以一键清空已输入内容,提升…

    编程 2025-04-25
  • Vue 往数组添加字母key

    本文将详细阐述如何在 Vue 中往数组中添加字母 key,并从多个方面探讨实现方法。 一、Vue 中添加字母 key 的实现方法 在 Vue 中,添加 key 可以使用 v-bin…

    编程 2025-04-25
  • Vue强制重新渲染组件详解

    一、Vue强制重新渲染组件是什么? Vue中的强制重新渲染组件指的是,当我们需要重新渲染组件,但是组件上的数据又没有改变时,我们可以使用强制重新渲染的方式来触发组件重新渲染。这种方…

    编程 2025-04-25

发表回复

登录后才能评论