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日

相关文章

  • 浅谈AngularJs 双向绑定原理(数据绑定机制)

    浅谈AngularJs 双向绑定原理(数据绑定机制) 什么是双向绑定 双向绑定指的是将视图和模型之间的数据绑定在一起,使得当视图的数据发生变化时,模型中的数据也会自动更新;同样,当模型中的数据被修改时,视图中的数据也会跟着改变。这种机制可以减轻开发人员的负担,提高开发效率。 AngularJs 中双向绑定的原理 AngularJs 是一种基于MVVM模型的框…

    Vue 2023年5月28日
    00
  • vue如何定义全局变量和全局方法实例代码

    下面我将详细讲解Vue如何定义全局变量和全局方法的实例代码。 定义全局变量 在Vue中,定义全局变量可以通过Vue的原型挂载属性的方式,以下是具体实现步骤: 首先在Vue实例化之前,通过Vue的原型注册全局属性: Vue.prototype.$globalVariable = ‘global_variable’; 这个例子中注册了一个名为$globalVar…

    Vue 2023年5月28日
    00
  • vue 出现data-v-xxx的原因及解决

    我来为您讲解”vue 出现data-v-xxx的原因及解决”的完整攻略。 一、 原因 在Vue中,我们通常使用模板语法和组件来构建UI界面。在这个过程中,我们定义了许多组件和样式。但是由于Vue的单文件组件特性,组件和样式都是被局部作用的。如果没有对应的处理,那么在多个组件中使用了相同的样式类名,就会产生样式冲突的问题。 为了解决这个问题,Vue采用了一种称…

    Vue 2023年5月28日
    00
  • idea项目debug模式无法启动的解决

    针对“idea项目debug模式无法启动”的问题,我们可以尝试以下措施解决: 1. 检查项目依赖 在使用idea进行项目开发时,如果项目依赖有问题,可能会导致debug模式启动失败。这时我们可以尝试检查一下项目依赖的问题,具体步骤如下: 在idea中打开对应项目 点击菜单栏上的File -> Project Structure 在弹出的窗口中,点击左侧…

    Vue 2023年5月28日
    00
  • Vue非父子组件之间的通信方式详解

    Vue非父子组件之间的通信方式详解 在Vue中,父子组件之间的数据传递和通信比较容易实现,但是在非父子组件之间的通信则需要通过一些特殊的方式来实现。本文将详细介绍Vue非父子组件之间的通信方式。 1. 公共事件总线 公共事件总线是一种非常简单和常用的非父子组件通信方式,它利用Vue实例作为一个中央事件总线来进行通信。具体实现步骤如下: 实例化一个Vue实例并…

    Vue 2023年5月27日
    00
  • Vue Element前端应用开发之常规的JS处理函数

    Vue Element前端应用开发之常规的JS处理函数 在Vue Element前端应用开发中,JS处理函数是非常常见的。下面给出了一些常见JS处理函数的使用方法和示例。 1. 数组的过滤函数filter() 简介 filter() 是数组的一个常用方法,它返回一个新的被过滤后的数组,原数组不发生变化。 filter() 接受一个回调函数作为参数,该回调函数…

    Vue 2023年5月28日
    00
  • vue如何使用cookie、localStorage和sessionStorage进行储存数据

    让我来为你详细讲解Vue如何使用cookie、localStorage和sessionStorage进行数据储存。 什么是cookie、localStorage和sessionStorage? Cookie:HTTP是一种无状态协议,为了记录用户的状态,引入了cookie技术。Cookie是存储在浏览器中的小型文本文件。它通过在用户计算机中存储信息来跟踪用户…

    Vue 2023年5月27日
    00
  • 简单设置el-date-picker的默认当前时间问题

    下面是详细讲解如何设置 el-date-picker 的默认当前时间的攻略: 1.需求分析 当我们使用 el-date-picker 来选择日期时,默认展示的日期为当前日期,这在大部分场景下都是符合要求的。但有时候我们需要默认选中其他日期,比如一个从某一具体日期开始的查询页面。 在这种情况下,我们就需要设置 el-date-picker 的默认当前时间,让它…

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