当前位置: 首页 > news >正文

mapState 函数的用法

mapState 是 Vuex 提供的一个辅助函数,其主要作用是将 Vuex 仓库中的状态映射到组件的计算属性中,这样在组件里就能像访问本地计算属性一样访问 Vuex 仓库中的状态。以下为你详细介绍 mapState 函数的不同用法。

1. 基本用法:对象形式

当使用对象形式时,你可以自定义组件计算属性的名称,并指定从 Vuex 仓库中获取状态的方式。

示例代码

vue

<template>
  <div>
    <!-- 访问映射后的计算属性 -->
    <p>用户姓名: {{ userName }}</p>
    <p>用户年龄: {{ userAge }}</p>
  </div>
</template>

<script>
import { mapState } from 'vuex';

export default {
  computed: {
    ...mapState({
      // 自定义计算属性名称,从根状态获取 user.name
      userName: state => state.user.name, 
      // 自定义计算属性名称,从根状态获取 user.age
      userAge: state => state.user.age 
    })
  }
};
</script>
代码解释
  • mapState 函数接收一个对象作为参数,对象的键是组件计算属性的名称,值是一个箭头函数,用于从 Vuex 仓库的状态对象 state 中获取所需的状态。
  • 使用扩展运算符 ... 将 mapState 返回的对象展开,合并到组件的 computed 选项中。

2. 数组形式

若组件计算属性的名称与 Vuex 仓库中的状态名称一致,可使用数组形式简化代码。

示例代码

vue

<template>
  <div>
    <!-- 访问映射后的计算属性 -->
    <p>用户姓名: {{ name }}</p>
    <p>用户年龄: {{ age }}</p>
  </div>
</template>

<script>
import { mapState } from 'vuex';

export default {
  computed: {
    ...mapState([
      // 映射根状态中的 name 到组件的计算属性 name
      'name', 
      // 映射根状态中的 age 到组件的计算属性 age
      'age' 
    ])
  }
};
</script>
代码解释
  • mapState 函数接收一个数组作为参数,数组中的元素是 Vuex 仓库中状态的名称。
  • 组件中计算属性的名称会与数组中的元素名称保持一致。

3. 混合使用对象和本地计算属性

在组件的 computed 选项中,你可以将 mapState 与本地计算属性混合使用。

示例代码

vue

<template>
  <div>
    <!-- 访问映射后的计算属性 -->
    <p>用户姓名: {{ name }}</p>
    <!-- 访问本地计算属性 -->
    <p>用户姓名大写: {{ upperCaseName }}</p>
  </div>
</template>

<script>
import { mapState } from 'vuex';

export default {
  computed: {
    ...mapState([
      'name'
    ]),
    // 本地计算属性
    upperCaseName() { 
      return this.name.toUpperCase();
    }
  }
};
</script>
代码解释
  • 先使用 mapState 将 Vuex 仓库中的 name 状态映射到组件的计算属性 name 上。
  • 再定义一个本地计算属性 upperCaseName,它依赖于 name 计算属性。

4. 模块中的状态映射

若 Vuex 仓库使用了模块,可通过对象形式指定从特定模块中获取状态。

示例代码

vue

<template>
  <div>
    <!-- 访问映射后的计算属性 -->
    <p>用户角色: {{ userRole }}</p>
  </div>
</template>

<script>
import { mapState } from 'vuex';

export default {
  computed: {
    ...mapState({
      // 从 userModule 模块中获取 role 状态
      userRole: state => state.userModule.role 
    })
  }
};
</script>
代码解释
  • 通过箭头函数 state => state.userModule.role 从 userModule 模块中获取 role 状态,并将其映射到组件的计算属性 userRole 上。

通过以上几种用法,你可以灵活地使用 mapState 函数将 Vuex 仓库中的状态映射到组件的计算属性中。

相关文章:

  • 7.5 分治:归并:LeetCode 剑指 Offer 51.数组中的逆序对
  • docker 搭建部署知识库XWIKI
  • 【嵌入式学习3】信息安全 - SSH协议
  • JAVA反序列化深入学习(六):CommonsCollections4
  • jQuery 入门到精通
  • Vue中使用antd-table组件时,树形表格展开配置不生效-defaultExpandedRowKeys-默认展开配置不生效
  • 经典算法 排列的字典序问题
  • 为什么需要 Node.js 的 URL 处理工具?
  • JavaScript 函数参数详解
  • 后端实现加解密工具类(记录)
  • MySQL增删改查(CRUD)操作详解与实战指南
  • Java EE(17)——网络原理——IP数据报结构IP协议解析(简述)
  • TabularDataset
  • 蓝桥杯备考----》完全背包模板
  • HarmonyOs学习 实验四:开发一个登录界面
  • Electron 系统托盘与屏幕捕捉深度解析:从基础到企业级实践
  • 【Linux】网络概念
  • STM32F103_LL库+寄存器学习笔记13 - 梳理外设CAN与如何发送CAN报文(串行发送)
  • [Vue2]侦听器watch(监视器)
  • Android JobScheduler调度任务面试题及参考答案
  • 提供网站建设报价/百色seo外包
  • 浏览器正能量网站2021/黄页
  • 做牛津纺衬衫的网站/关键字排名查询工具
  • 设计界面/在线工具seo
  • 制造网站/有哪些实用的网络推广方法
  • 网站建设策划书的撰写/网站源码交易平台