Vue3使用Vuex之mapState与mapGetters详解

yizhihongxing

当使用Vue3构建大型Web应用时,状态管理是很重要的一点。Vuex是一个非常流行的Vue.js状态管理库。而在Vue3中,使用Vuex也是非常方便的。其中,使用mapState和mapGetters是非常常见的两种方式。下面,我们详细讲解一下这两种方式的使用方法。

mapState

mapState是Vuex提供的辅助函数,可以将store中的state映射到局部计算属性中。在使用mapState之前,需要在Vue组件上关联Vuex,这样才能访问store的状态。假设我们有一个user模块,其定义如下:

const moduleUser = {
  state: {
    name: '张三',
    age: 18,
    sex: '男'
  },
  getters: {
    userInfo(state) {
      return `${state.name},${state.age}岁,${state.sex}`;
    }
  },
  mutations: {
    changeName(state, name) {
      state.name = name;
    }
  }
}

那么我们要在Vue组件中使用该模块的状态,可以使用以下方法:

首先在组件中引入mapState

import { mapState } from 'vuex'

然后在组件计算属性中使用该方法:

computed: {
  ...mapState({
    name: state => state.moduleUser.name,
    age: state => state.moduleUser.age,
    sex: state => state.moduleUser.sex
  })
}

这样我们就可以在组件中通过this.name、this.age、this.sex访问到对应的state中的值了。如果需要访问到多个模块中的状态,可以使用命名空间:

computed: {
  ...mapState('moduleUser', {
    name: state => state.name,
    age: state => state.age,
    sex: state => state.sex
  }),
  ...mapState('moduleArticle', {
    title: state => state.title,
    content: state => state.content
  })
}

这里我们使用了两个模块中的状态,分别是moduleUser和moduleArticle。

mapGetters

mapGetters与mapState类似,不同的是它映射的是store中的getters到局部计算属性中。先看一个例子:

const moduleArticle = {
  state: {
    title: '文章标题',
    content: '文章内容'
  },
  getters: {
    articleInfo(state) {
      return `标题:${state.title},内容:${state.content}`;
    }
  },
  mutations: {
    changeContent(state, content) {
      state.content = content;
    }
  }
}

首先在组件中引入mapGetters

import { mapGetters } from 'vuex'

然后在组件计算属性中使用该方法:

computed: {
  ...mapGetters('moduleArticle', [
    'articleInfo'
  ])
}

这样我们就可以在组件中通过this.articleInfo访问到对应的getters中的值了。

从两个示例中可以看到,使用mapState和mapGetters非常方便,能够帮助我们快速访问到store中的状态和getters。使用起来也非常简单,只需要引入辅助函数,然后在计算属性中使用即可。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Vue3使用Vuex之mapState与mapGetters详解 - Python技术站

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

相关文章

  • 浅谈vue中$bus的使用和涉及到的问题

    本文将为大家详细讲解“浅谈vue中$bus的使用和涉及到的问题”。 1. 什么是$bus 在 Vue.js 的事件机制中,存在一种很特殊的事件派发 / 监听模式,即使用 $on 和 $emit 方法的全局事件总线。这种模式是基于一个空的 Vue 实例作为中央事件总线的模式。 这种空的 Vue 实例被称为 $bus,$bus 实例可以被用来作为组件间传输数据的…

    Vue 2023年5月29日
    00
  • 详解Vue中localstorage和sessionstorage的使用

    详解Vue中localStorage和sessionStorage的使用 简介 对于一些 Vue.js 开发者来说,localStorage 和 sessionStorage 是存储数据的不错选择,本文将详细介绍这两个 API 的使用,同时说明如何在 Vue.js 组件中使用它们。 localStorage localStorage 是 Web Storag…

    Vue 2023年5月27日
    00
  • vue常用指令代码实例总结

    Vue常用指令代码实例总结攻略 什么是Vue指令 Vue指令是一种特殊的HTML属性, 它们以v-前缀开头,用于渲染模板。指令中可以包含绑定表达式,该表达式的值被动态计算,并且可以自动响应数据变化。 Vue指令有很多种,下面我们来详细讲解一些常用指令的代码实例。 v-if指令 v-if 指令用于根据表达式的值来有条件地渲染某个元素,如果表达式的值为false…

    Vue 2023年5月27日
    00
  • Vue路由传参的三种方式实例详解

    当我们使用Vue框架进行开发时,Vue路由传参是一项非常常见的操作,可以通过多种方式进行实现。本篇攻略将为大家介绍Vue路由传参的三种具体实例,帮助开发者更好地了解和掌握Vue路由传参的使用方法。 路径参数 路径参数是一种常见的路由传参方式,它可以将参数添加到URL的路径中,如下: const router = new VueRouter({ routes:…

    Vue 2023年5月28日
    00
  • vue3.x中emits的基本用法实例

    下面是详细讲解Vue3.x中emits的基本用法实例的攻略,包含两个示例说明。 Vue3.x中emits的基本用法实例 什么是emits? emits是Vue3新引入的一个选项,它用于为自定义组件声明触发的自定义事件。在Vue3中,$emit方法被移到了组件实例的emits属性中,因此emits属性的主要作用就是声明自定义事件,为自定义组件提供了非常好的解耦…

    Vue 2023年5月28日
    00
  • vue 取出v-for循环中的index值实例

    下面我将详细讲解”vue 取出 v-for循环中的index值实例”的攻略。 1. 在v-for循环中使用index 使用v-for循环时,可以给它提供一个参数,这个参数将会被自动的设置为当前项的索引值。v-for的语法如下: <template> <div> <ul> <li v-for="(item, …

    Vue 2023年5月29日
    00
  • VSCode搭建vue项目的实现步骤

    下面我将详细讲解 “VSCode搭建vue项目的实现步骤”的完整攻略。整个过程包括: 安装Node.js 安装Vue CLI 创建Vue项目 配置VSCode开发环境 运行Vue项目 示例说明 1. 安装Node.js 首先,需要在电脑上安装Node.js,以便在命令行终端中使用npm安装Vue CLI和其他必要依赖项。Node.js的官方安装包可以在官网下…

    Vue 2023年5月28日
    00
  • Vue中对数组和对象进行遍历和修改方式

    那么我们来详细讲解一下Vue中对数组和对象进行遍历和修改的方式。 对象的遍历和修改 首先,我们来看一下如何遍历一个对象。Vue提供了一个专门用于对象遍历的指令v-for,通过它可以方便地遍历对象的每一个属性。 <template> <div> <ul> <li v-for="(value, key) in …

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