[vue3+ts]方法一:使用vuex的mapState和mapGetters

2023-10-27

src下新建hooks/useState.js

import { computed } from 'vue'
import { mapState, useStore } from 'vuex'
// mapper是存在state中的数据
export function useState(mapper) {
  const store = useStore()

  const storeStateFns = mapState(mapper)

  const storeState = {}
  Object.keys(storeStateFns).forEach(fnKey => {
    const fn = storeStateFns[fnKey].bind({ $store: store })
    storeState[fnKey] = computed(fn)
  })

  return storeState
}

mapState在页面中的使用

import { useState } from '@/hooks/useState'
const storeState:any = useState({
  // 自定义变量名:state => state.命名空间的名称.state中的数据名
  defaultAppId: (state: any) => state.serviceDetails.defaultAppId
})

// 取值方式
const { defaultAppId } = storeState			// 解构取值
console.log(storeState.defaultAppId)		// 有数据
console.log(defaultAppId, '==============')		// 有数据

src下新建hooks/useGetters.js

import { computed } from 'vue'
import { mapGetters, useStore } from 'vuex'

export function useGetters(mapper) {
  const store = useStore()

  const storeGettersFns = mapGetters(mapper)

  const storeGetters = {}
  Object.keys(storeGettersFns).forEach(fnKey => {
    const fn = storeGettersFns[fnKey].bind({ $store: store })
    storeGetters[fnKey] = computed(fn)
  })

  return storeGetters
}

mapGetters在页面中的使用

import { useGetters } from '@/hooks/useGetters'

const storeGetters:any = useGetters({
  // 自定义变量名: 命名空间的模块名/getters中的数据名
  defaultAppId: 'serviceDetails/defaultAppId'
})
console.log(storeGetters.defaultAppId, '==================================')	// 有数据
// 也可以解构去取值,不想写了
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

[vue3+ts]方法一:使用vuex的mapState和mapGetters 的相关文章

随机推荐

  • 入门级题解2:394. 字符串解码

    知识点总结 这里的字符串中s i 是数字时转为数字用的是 s i 0 asic码来转化 不用stoi那个 多个数位的情况23 abb int val 0很重要 这样就第一个数位是个位的情况也能直接用 if true isdigit s i
  • Android拓展系列--Android源码下载

    1 安装git和curl命令 sudo apt get install git core curl 说明 curl是一个向服务器或从服务器传输数据的工具 它支持HTTP HTTPS FTP FTPS SCP SFTP TFTP DICT T
  • spring boot集成mybatis-plus——Mybatis Plus 新增数据并返回主键 ID(图文讲解)

    Mybatis Plus 新增数据并返回主键 ID 图文讲解 更新时间 2023 01 10 15 37 37 大家好 我是小哈 本小节中 我们将学习如何通过 Mybatis Plus 框架给数据库表新增数据 主要内容思维导图如下 Myba
  • CAS研究(四)-登出/logout

    很多童鞋对单点登出不是很理解 下面我们来看看单点登出到底做了什么东西 我们来看看怎么从配置到代码的 1 web xml com bingo tfp web init SafeDispatcherServlet
  • 获取URL参数的两种方法及location对象的各项获取方式

    获取URL参数第一种 第二种公共部分首页
  • MongoDB地理空间简介与一个简单的示例:寻找一定距离范围内餐厅

    地理空间数据 在MongoDB中 可以将地理空间数据存储为 GeoJSON对象 或 传统坐标对 以上两种数据都在何种情况下使用 GeoJSON对象 要计算类球体上的几何体 位置数据应存储为GeoJSON对象 传统坐标对 要计算欧几里得平面上
  • mac jd-gui-osx jar包反编译工具使用报错

    JD GUI 是一款轻量级的jar包反编译工具 官网地址 https java decompiler github io 笔者安装完之后启动报错 如果你也有相同问题 可以使用我的方法解决看看 笔记本信息 报错信息 从报错信息来看 是jdk版
  • openwrt开发使用-OPKG包管理系统详解

    一 OPKG简介 OPKG Open OpenWrt Package 是一个轻量快速的软件包管理系统 是 IPKG 的克隆 目前已成为开源嵌入式系统领域的事实标准 OPKG 常用于路由 交换机等嵌入式设备中 用来管理软件包的下载 安装 升级
  • k近邻法matlab_【机器学习算法笔记】01-k近邻法

    k近邻法是一种基本的分类和回归方法 是最简单的监督学习算法之一 其本质极其直观 在给定的训练数据集里找距离新的输入实例最近的k个实例 将该k个实例中的多数标签赋给输入实例即可 问题的关键在于三个方面 距离度量 样本空间中两个实例点的距离显然
  • 研华工控机通过CAN2.0B控制自己制作的PCB电路板

    最近在做研华工控机控制输出IO 因为工控机的IO板卡比较贵 而且后面必须接继电器 这样会造成我们机器的电控柜比较大 电路走线非常困难 在这个原因的困扰下 我提出自己做一块IO驱动板的需求 最后在我们硬件工程师的努力下 总算完成IO驱动板的设
  • 在Windows下编译VLC并实现播放视频

    在Windows下编译VLC并实现播放视频 一 编译Win版的VLC真麻烦 二 获取VLC的SDK 1 下载VLC播放器 2 库文件 3 头文件 三 调用VLC实现播放视频 1 拷贝头文件和库文件 2 修改pro文件 3 封装播放器类VLC
  • 前端模块化!

    模块化 1 简介 模块化产生的背景 随着网站逐渐变成 互联网应用程序 嵌入网页的Javascript代码越来越庞大 越来越复杂 Javascript模块化编程 已经成为一个迫切的需求 理想情况下 开发者只需要实现核心的业务逻辑 其他都可以加
  • 基于微信小程序的电影院买票选座系统

    末尾获取源码 开发语言 Java Java开发工具 JDK1 8 后端框架 SSM 前端工具 微信小程序工具 数据库 MySQL5 7和Navicat管理工具结合 服务器 Tomcat8 5 开发软件 IDEA Eclipse 是否Mave
  • 借助EspExceptionDecoder工具分析定位esp8266或esp32异常问题

    借助EspExceptionDecoder工具分析定位esp8266或esp32异常问题 文章目录 借助EspExceptionDecoder工具分析定位esp8266或esp32异常问题 问题出现Exception stack EspEx
  • eclipse中文注释缩进问题

    1 问题 中文注释的缩进有问题 英文注释没有问题 2 查看当前字体 3 修改字体 改为宋体或其他字体 就没有该问题了 也可以选择系统字体
  • 【Markdown】 实现上角标和下角标的两种方法(详细讲解!!!)

    作者 MiTu 本帖内容著作权归作者所有 转载请务必保留本文链接 Markdown实现上下角标的两种方法 第一种 使用Markdown自带的代码格式 下标 内容 例 H2O H 2 O 上标 内容 例 210 2 10 第二种 使用 HTM
  • 又发现一个好玩的 Pycharm 插件,通过AI自动生成代码块注释

    经常在开发代码块的过程中都需要写大量的注释来完成对代码块的说明 作为一名程序猿可能经常在抱怨别人开发的代码块没有注释或是注释不清楚 但我们自己又不想把大量的时间花费在代码块注释的编写上面 今天要说的这款插件是Mintlify Doc Wri
  • Go工程化 - 依赖注入

    在微服务框架kratos v2的默认项目模板中kratos layout使用了google wire进行依赖注入 也建议开发者在维护项目时使用该工具 wire 乍看起来比较违反直觉 导致很多同学不理解为什么要用或不清楚如何用 也包括曾经的我
  • 利用react基础编写案例---【求和】

    案例图 redux方法 代码 index js import React from react import ReactDOM from react dom import App from App ReactDOM render
  • [vue3+ts]方法一:使用vuex的mapState和mapGetters

    src下新建hooks useState js import computed from vue import mapState useStore from vuex mapper是存在state中的数据 export function u