返回顶部
首页 > 资讯 > 精选 >Vue3怎么使用Vuex的mapState与mapGetters
  • 569
分享到

Vue3怎么使用Vuex的mapState与mapGetters

2023-07-05 13:07:39 569人浏览 薄情痞子
摘要

今天小编给大家分享一下vue3怎么使用Vuex的mapState与mapGetters的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解

今天小编给大家分享一下vue3怎么使用Vuex的mapState与mapGetters的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

1.如何使用?

Vue中我们可以通过点语法很容易的获取到Vuexstate的值,但当state数据比较多时,这样很不方便,可以借助mapState映射来简化;由于目前vuex的官网中提供的是Vue2的demo,下面说一下在Vue3中如何使用mapState
假设:在Vuex中的state具有tokenusername属性,现在要通过mapState取得tokenusername

Vue3+JS

<script setup>import { useStore, mapState } from "vuex";import { computed } from "vue";const store = useStore();const mappers = mapState(["token", "username"]);const mapData = {}Object.keys(mappers).forEach((item) => {    mapData[item] = computed(mappers[item].bind({ $store:store }));});console.log(mapData)// ref类型的mapData对象:{token: ComputedRefImpl, username:ComputedRefImpl}</script>

Vue3+TS(ps:建议直接使用pinia替代Vuex

<script setup lang="ts">import { useStore, mapState } from "vuex";import { computed } from "vue";import type { Ref } from 'vue'type mappersType = {    token:() => any,    username:() => any,    [propName:string]:any}type mapDataType = {    token:Ref,    username:Ref,    [propName:string]:Ref}const store = useStore();const mappers:mappersType = mapState(["token", "username"]) as mappersTypeconst mapData:mapDataType = {} as mapDataType;Object.keys(mappers).forEach((item) => {    mapData[item] = computed(mappers[item].bind({ $store:store }));});console.log(mapData)// ref类型的mapData对象:{token: ComputedRefImpl, username:ComputedRefImpl}</script>

2.代码封装

storeMap.js

import { computed } from 'vue';function getStoreMap($store, mappers) {    const mapData = {}    Object.keys(mappers).forEach((item) => {    mapData[item] = computed(mappers[item].bind({ $store })).value;    });    return mapData;}export { getStoreMap }

使用

<script setup>import { useStore, mapState, mapGetters } from "vuex";import { getStoreMap } from './storeMap'const store = useStore();const mappers = mapState(["token", "username"]);// const mappers = mapGetters(["getToken", "getUsername"]); //也可以获取mapGettersconst mapData = getStoreMap(store, mappers)console.log(mapData) // 包含state或getters属性的ref类型的对象</script>

3.解题思路

以下是我的一种比较取巧的解题思路,可酌情参考

延用上面的例子
首先,我们先导入mapState,并创建一个空的mapState对象,将鼠标移动至mapState()上查看

Vue3怎么使用Vuex的mapState与mapGetters

可以看到mapState接收的是一个字符串类型的数组,返回的是一个属性为string类型,值为Computed类型的对象,可推导这里mapState接收的应是["token", "username"]
const mappers = mapState(["token", "username"]);

再次将鼠标移动至mappers上,查看mappers类型

Vue3怎么使用Vuex的mapState与mapGetters

可以看到mappers是一个对象;
console.log(mappers.token)查看属性token属性的值是什么

Vue3怎么使用Vuex的mapState与mapGetters

可以看到mappers.token是一个方法;
通过console.log(mappers.token())调用输出这个方法,发现浏览器的控制台报错了

Vue3怎么使用Vuex的mapState与mapGetters

错误提示Cannot read properties of undefined (reading 'state'),点击上图蓝色箭头处查看报错的源代码

Vue3怎么使用Vuex的mapState与mapGetters

可以看出整个截图部分是mapState对象,我们执行mappers.token()是图中标红的区域,再结合报错信息可知报错是因为这里的this对象没有$store属性。
由于this中只有$store被使用,并没有用到this的其他属性,则可以通过bind方式,手动传一个具有store属性的this对象进去,并输出调用

Vue3怎么使用Vuex的mapState与mapGetters


这时我们可以看到token的值已经在浏览器被输出了,然后将bind()后的方法放到computed里执行即可得到Ref类型的token对象。

Vue3怎么使用Vuex的mapState与mapGetters

以上就是“Vue3怎么使用Vuex的mapState与mapGetters”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注编程网精选频道。

--结束END--

本文标题: Vue3怎么使用Vuex的mapState与mapGetters

本文链接: https://lsjlt.com/news/352181.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Vue3怎么使用Vuex的mapState与mapGetters
    今天小编给大家分享一下Vue3怎么使用Vuex的mapState与mapGetters的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解...
    99+
    2023-07-05
  • Vue3使用Vuex之mapState与mapGetters详解
    目录1.如何使用?2.代码封装3.解题思路1.如何使用? 在Vue中我们可以通过点语法很容易的获取到Vuex中state的值,但当state数据比较多时,这样很不方便,可以借助ma...
    99+
    2023-03-20
    Vue3 Vuex mapState mapGetters Vue3 Vuex
  • vuex中mapState,mapGetters,mapActions,mapMutations怎么用
    这篇文章主要为大家展示了“vuex中mapState,mapGetters,mapActions,mapMutations怎么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研...
    99+
    2024-04-02
  • vuex中mapState、mapGetters、mapMutations、mapActions的作用是什么
    本篇文章为大家展示了vuex中mapState、mapGetters、mapMutations、mapActions的作用是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能...
    99+
    2024-04-02
  • vue3.0使用mapState,mapGetters和mapActions的方式
    目录vue2.0中使用mapState及mapActions的方式 vue3.0中获取state和使用actions的方式如何才能在vue3下使用mapState这些api...
    99+
    2024-04-02
  • vuex中辅助函数mapGetters怎么使用
    这篇“vuex中辅助函数mapGetters怎么使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看...
    99+
    2024-04-02
  • 如何解决mpvue+vuex 开发微信小程序vuex辅助函数mapState、mapGetters不可用的问题
    这篇文章主要介绍如何解决mpvue+vuex 开发微信小程序vuex辅助函数mapState、mapGetters不可用的问题,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!问题分析•...
    99+
    2024-04-02
  • Vue3中Vuex怎么使用
    本篇内容介绍了“Vue3中Vuex怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Vuex是做什么的?Vue官方:状态管理工具状态管理...
    99+
    2023-07-02
  • vuex在vue3中怎么使用
    这篇文章主要介绍“vuex在vue3中怎么使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“vuex在vue3中怎么使用”文章能帮助大家解决问题。在vue3中,vuex用于储存和管理所有组件的状态,...
    99+
    2023-06-29
  • Vue3中Vuex的详细使用方法
    目录Vuex是做什么的?状态管理是什么单页面的状态管理vuex(Vue3.2版本)多页状态管理vuex store对象属性介绍Vue3中获取 store 实例对象的方法1. stat...
    99+
    2024-04-02
  • Vue3中vuex的基本使用方法实例
    目录一、基本结构二、基本使用三、将store中的数据模块化后的使用1.模块化2.使用补充:如何改变vuex中的属性总结 一、基本结构 src/store/index.js中...
    99+
    2024-04-02
  • vuex在vite&vue3中的简单使用说明
    目录vuex在vite&vue3的使用一、说明二、使用vue3.x之vite初体验一、项目搭建二、附项目结构三、附项目启动成功图vuex在vite&vue3的使用 注...
    99+
    2024-04-02
  • vuex的Mutation怎么使用
    这篇“vuex的Mutation怎么使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“vu...
    99+
    2024-04-02
  • Vue的Vuex怎么使用
    这篇文章主要讲解了“Vue的Vuex怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Vue的Vuex怎么使用”吧!优缺点优点响应式属于 vue 生态一环,,能够触发响应式的渲染页面更新...
    99+
    2023-06-28
  • vue3中router路由及vuex的store如何使用
    这篇“vue3中router路由及vuex的store如何使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“vue3中rou...
    99+
    2023-06-29
  • vue3中使用vuex和vue-router的详细步骤
    目录vuex 安装使用步骤index.js文件main.js文件组件中使用vuexvue-router安装基本配置index.jsmain.jsvue3中路由的使用axio...
    99+
    2022-12-08
    vue3使用vuex vue3使用vue-router
  • vuex中的Modules怎么使用
    这篇文章主要介绍了vuex中的Modules怎么使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇vuex中的Modules怎么使用文章都会有所收获,下面我们一起来看看吧。1 、什么是模块ModulesVuex...
    99+
    2023-06-30
  • Vuex中的API怎么使用
    今天小编给大家分享一下Vuex中的API怎么使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。构造器选项state类型: O...
    99+
    2023-07-04
  • vue3.2中的vuex怎么使用
    这篇文章主要介绍“vue3.2中的vuex怎么使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“vue3.2中的vuex怎么使用”文章能帮助大家解决问题。Vuex 中有以下几个核心概念:State:...
    99+
    2023-07-06
  • Vue3响应式的ref与reactive怎么使用
    这篇文章主要讲解了“Vue3响应式的ref与reactive怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Vue3响应式的ref与reactive怎么使用”吧!ref:定义基本数据类...
    99+
    2023-07-04
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作