Vue2状态管理怎么使用 mapState 和 mapGetters 简化Vuex读取

夏伟姑娘_6462

夏伟姑娘_6462

2026-08-09

739人浏览

原创

mapstate和mapgetters是vuex提供的辅助函数,用于将store的state和getter映射到组件computed属性,支持数组/对象写法及命名空间模块;需通过commit/dispatch修改状态。

vue2状态管理怎么使用 mapstate 和 mapgetters 简化vuex读取

在 Vue 2 中,mapState 和 mapGetters 是 Vuex 提供的辅助函数,用来把 store 中的状态和 getter 映射到组件的计算属性里,避免手动写冗长的 this.$store.state.xxx 或 this.$store.getters.xxx。用得好,代码更简洁、可读性更强。

mapState:快速映射 state 到 computed

mapState 适用于直接读取 Vuex store 的 state 属性。它支持数组写法和对象写法,推荐用对象写法,便于起别名或添加逻辑。

  • 数组写法(适合字段名与 state 键名一致):

<script><br> import { mapState } from '<a style="color:#f60; text-decoration:underline;" title= "vue"href="https://m.php.cn/zt/15721.html" target="_blank">vuex'<br> export default {<br> computed: mapState(['count', 'userInfo'])<br> }<br> </script>

  • 对象写法(支持重命名、计算逻辑):

computed: mapState({
  // 直接映射
  count: state => state.count,
  // 重命名(比如把 cartItems 改成 cart)
  cart: state => state.cartItems,
  // 带逻辑处理
  hasItems: state => state.cartItems.length > 0
})

注意:箭头函数里的 state 指的是根 state;如果用了命名空间模块,需配合命名空间前缀(见下文)。

mapGetters:简化 getter 调用

mapGetters 用法和 mapState 类似,但映射的是 store 中定义的 getters。它同样支持数组和对象两种写法。

  • 数组写法(简单场景):

computed: mapGetters(['doneTodos', 'cartTotalPrice'])

Vue
Vue

避免 Vue 常见错误——响应式陷阱、ref 与 reactive 区别、计算属性时机及 Composition API 陷阱。

下载
  • 对象写法(支持别名):

computed: mapGetters({
  finished: 'doneTodos',
  total: 'cartTotalPrice'
})

getter 本质是带缓存的计算属性,适合封装派生状态(如过滤、统计),比在组件里重复写逻辑更可靠。

配合命名空间模块使用

当 store 分模块且启用了 namespaced: true,必须显式指定模块路径,否则会找不到。

  • 映射某模块的 state:

computed: mapState('user', ['name', 'avatar'])

  • 映射某模块的 getter:

computed: mapGetters('product', ['onSaleList', 'topRated'])

  • 对象写法中带命名空间(更清晰):

computed: {
  ...mapState('cart', ['items']),
  ...mapGetters('cart', { cartSize: 'size' })
}

组合使用 + 注意事项

实际开发中,通常把 mapState、mapGetters 和组件自身计算属性一起用,用展开运算符合并:

computed: {
  ...mapState(['count']),
  ...mapGetters(['doneCount']),
  // 自定义计算属性
  isBusy() { return this.count > 100 }
}

  • 不要在 mapState 或 mapGetters 里写副作用(如调用 API),它们只用于响应式读取
  • 映射后的属性是只读的,修改它们不会影响 store;要改状态,必须通过 commit 或 dispatch
  • 确保已正确安装 Vuex 并在根实例传入 store,否则会报 $store is undefined

前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

vue.js vue vuex

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
golang map内存释放
golang map内存释放

本专题整合了golang map内存相关教程,阅读专题下面的文章了解更多相关内容。

2025.09.05

450

5

golang map相关教程
golang map相关教程

本专题整合了golang map相关教程,阅读专题下面的文章了解更多详细内容。

2025.11.16

323

7

golang map原理
golang map原理

本专题整合了golang map相关内容,阅读专题下面的文章了解更多详细内容。

2025.11.17

493

20

java判断map相关教程
java判断map相关教程

本专题整合了java判断map相关教程,阅读专题下面的文章了解更多详细内容。

2025.11.27

243

6

vuex是什么
vuex是什么

Vuex是一个用于Vue.js应用程序的状态管理模式,提供了一种结构化的方式来组织和管理应用程序的状态,使得数据的获取和修改更加简单和可靠。本专题为大家提供vuex相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.11

675

5

Buffalo框架数据库开发全教程
Buffalo框架数据库开发全教程

本专题围绕Buffalo框架数据库开发,讲解database.yml多环境配置、soda与fizz迁移生成回滚、模型结构体标签、增删改查与条件查询、一对多与多对多关联、数据校验、回调钩子、事务处理及原生SQL执行能力。

2026.09.23

140

15

Buffalo框架路由与请求处理实操指南
Buffalo框架路由与请求处理实操指南

本专题讲解Buffalo框架路由与请求处理机制,涵盖路由注册与分组、资源路由、Handler编写规范、Context上下文方法、参数绑定、中间件编写挂载、Session与Cookie读写、Flash消息及错误页面定制方法。

2026.09.23

80

15

Buffalo框架零基础入门教程
Buffalo框架零基础入门教程

本专题整理Buffalo框架入门内容,涵盖Go环境准备、buffalo CLI安装、新项目生成、目录结构说明、dev热加载启动、数据库连接配置与常见报错排查,帮助新手按约定优于配置的思路跑通第一个Buffalo框架应用。

2026.09.23

60

15

Conan创建软件包配方指南
Conan创建软件包配方指南

本专题介绍通过conanfile.py创建软件包的方法,讲解包名、版本、依赖和构建设置等基础信息,以及source、build、package、package_info等常用方法的作用及编写思路。

2026.09.22

40

12

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Vue 教程
Vue 教程

共42课时 | 16.8万人学习

国外Web开发全栈课程全集
国外Web开发全栈课程全集

共12课时 | 1.4万人学习

Vue.js 微实战--十天技能课堂
Vue.js 微实战--十天技能课堂

共18课时 | 1.7万人学习