Vue3使用Vuex之mapState与mapGetters详解

当使用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简介、引入、命令式与声明式编程详解

    Vue简介 Vue是一款渐进式的JavaScript框架,由尤雨溪开发。Vue的目标是通过更简单、更快速的方式来构建用户界面,在增强web应用开发效率、降低技术人员的学习成本、并确保高效的性能方面表现出色。 Vue特点: 轻量级框架,代码量小,执行效率高 易于学习和使用,拥有清晰的文档和注重开发体验的社区 渐进式框架,可以逐步使用, 或集成到其他系统中使用 …

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

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

    Vue 2023年5月28日
    00
  • 如何利用Vue3+Vite批量导入模块/资源

    以下是如何利用Vue3+Vite批量导入模块/资源的完整攻略: 1. 在Vite中使用批量导入 Vite是一个快速的构建工具,它通过利用现代浏览器的原生 ES 模块特性来实现快速的热重载和打包速度。Vite配合Vue3可以使用批量导入来加载模块/资源。以下是两个示例: 示例1:导入所有同一目录下的文件 在Vue3中,可以使用以下代码导入某个目录下的所有文件:…

    Vue 2023年5月28日
    00
  • bootstrap datetimepicker控件位置异常的解决方法

    下面是关于“bootstrap datetimepicker控件位置异常的解决方法”的完整攻略。 前言 datetimepicker是基于bootstrap库的一个控件,用于方便地选择日期和时间。在使用过程中,我们经常会遇到控件位置异常的情况,这时候该怎么办呢?下面我们就来一步一步解决这个问题。 步骤 第一步:检查样式表 datetimepicker的样式表…

    Vue 2023年5月28日
    00
  • 如何利用vue.js实现拖放功能

    要利用Vue.js实现拖放功能,需遵循以下步骤: 步骤一:添加Vue.js和拖放依赖包 在实现Vue.js拖放功能之前,需要添加Vue.js和相关的拖放依赖包。可以通过使用npm或直接链接到CDN来引入这些依赖。 <script src="https://cdn.jsdelivr.net/npm/vue"></scrip…

    Vue 2023年5月28日
    00
  • vue中组件通信的八种方式(值得收藏!)

    Vue中组件通信的八种方式 在Vue框架中,组件通信是十分重要的一环,特别是在大型项目中。Vue提供了多种方式来实现组件之间的通信。以下是Vue中组件通信的八种方式: 一、父向子传递数据 父组件可以通过prop传递数据给子组件。子组件通过props选项声明自己接受哪些来自父组件的属性。 例如,父组件向子组件传递一个字符串: <!– 父组件 –&gt…

    Vue 2023年5月27日
    00
  • 一文带你详细了解Vue中的v-for

    一文带你详细了解Vue中的v-for 介绍 Vue.js 是一个流行的前端框架,它提供了一个强大的指令,即 v-for。使用 v-for 可以轻松地在 Vue 中循环渲染一个数据数组或对象的属性列表。 基础语法 一个基本的 v-for 呈现元素的语法如下所示: <ul> <li v-for="(item, index) in it…

    Vue 2023年5月27日
    00
  • vue中复用vuex.store对象的定义

    在Vue项目中,我们通常使用Vuex库来管理应用中的状态。这使得我们可以更方便地在组件之间共享数据和状态。有时候,我们需要在不同的组件中复用Vuex的store对象,以实现跨组件访问和修改共享状态的目的。这个过程可以通过以下步骤完成: 1.定义Vuex的store对象 在Vue应用中,我们通常会在一个单独的js文件中定义Vuex的store对象。这个对象包含…

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