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

vue3获取vue实例 并注册全局属性方法

vue3注册全局属性方法

  • 前言
  • 一、app.config.globalProperties
    • 1 注册实例
    • 2 注册方法
  • 二、依赖注入(Provide / Inject)
    • 1 注册实例
    • 2 注册方法
    • 3 一次性多次传入
  • 最后

前言

在使用 Vue 时,多个地方使用同一个方法导致每个地方都需要按需引用,从而增加代码量。然而,这种做法实际上有助于减少冗余、提高一致性,并且是代码重用、抽象或模块化的体现。这种方法提高了代码的维护性、可读性和一致性。

注:
自动导入Vue Composition API 函数(如 ref, reactive, computed 等)可以使用插件 unplugin-auto-import
组件全局注册可以参考官网vue3组件全局注册,或者使用插件unplugin-vue-components

一、app.config.globalProperties

一个用于注册能够被应用内所有组件实例访问到的全局属性的对象。

1 注册实例

main.js 中引入全局要使用的实例,通过 app.config.globalProperties 添加到全局中

//main.js文件
const app = createApp(App)
app.config.globalProperties.$Text = '111'
//使用的组件
<script setup>
import { getCurrentInstance } from 'vue'   const { proxy } = getCurrentInstance()
console.log(proxy.$Text);  //111 </script>

2 注册方法

同理也是可以注册方法的
这里写了个防抖函数,关于防抖函数可以参考这里Vue中使用防抖和节流

//main.js文件
import { debounce } from "./util"
const app = createApp(App)
app.config.globalProperties.$Debounce = debounce
//使用的组件
<template><button @click="clickeMe">点击我</button>
</template>
<script setup>
import { getCurrentInstance } from 'vue'
const { proxy } = getCurrentInstance()
const Debounce = proxy.$Debounce 
const clickeMe = Debounce(async () => {console.log("await我被点击了");//这里写需要的代码
}, 1000);
</script>

参考官网:app.config.globalProperties

二、依赖注入(Provide / Inject)

提供一个值,可以被后代组件注入。
在这里插入图片描述

1 注册实例

<script setup>
//APP.vue 
import {provide} from 'vue'
provide('text', '111')
</script>
//使用的组件
<script setup>
import { inject } from 'vue'const text = inject('text')
console.log(text); //111
</script>

2 注册方法

这里一样的用防抖来举例

<script setup>
//APP.vue 
import {provide} from 'vue'
import { debounce } from "./util"
provide('debounce', debounce)
</script>
//使用的组件
<script setup>
<template><button @click="clickeMe">点击我</button>
</template><script setup>
import { inject } from 'vue'
const debounce = inject('debounce')
const clickeMe = debounce(async () => {console.log("await我被点击了");//这里写需要的代码
}, 1000);
</script> 

效果图
请添加图片描述
可以看到多次点击后1s内执行了一次

3 一次性多次传入

在 Vue 3 中,provide 函数本身不支持一次性传递多个值。但可以通过将多个值包装在一个对象中,来实现类似的效果。这样可以通过单个 provide 调用传递多个参数。
代码示例:

//APP.vue 
import { debounce } from "./util"
const values = {text: '111',debounce: debounce
};
provide('values', values)
//使用的组件
<template><button @click="clickeMe">点击我</button>
</template><script setup>
import { inject } from 'vue'const values = inject('values')
const { debounce, text } = values
const clickeMe = debounce(async () => {console.log("await我被点击了"); //这里写需要的代码
}, 1000);
console.log(text); //111
</script>

参考Vue3官网:组合式 API:依赖注入

最后

参考文档:Vue3 MaskerFan 博客园

相关文章:

vue3获取vue实例 并注册全局属性方法

vue3注册全局属性方法 前言一、app.config.globalProperties1 注册实例2 注册方法 二、依赖注入&#xff08;Provide / Inject&#xff09;1 注册实例2 注册方法3 一次性多次传入 最后 前言 在使用 Vue 时&#xff0c;多个地方使用同一个方法导致每个地方都需要按需引用&#…...

function calling后,如何让大模型进行自然语言输出?

在现代的自然语言处理&#xff08;NLP&#xff09;系统中&#xff0c;Function Calling 是指模型在对话过程中调用外部函数以获取特定数据或执行特定操作的能力。在 Function Calling 后&#xff0c;你可以将接收到的数据发送回大模型&#xff0c;并生成自然语言输出。以下是如…...

Android笔试面试题AI答之Kotlin(8)

文章目录 34.Kotlin 泛型中的“*”和“Any”有什么区别&#xff1f;Any*总结 35.Kotlin 协程在哪些方面优于 RxKotlin/RxJava&#xff1f;1. 语法简洁性和易读性2. 性能3. 错误处理和调试4. 场景适用性5. 学习和使用成本 36.Kotlin 协程中的 launch/join 和 async/await 有什么…...

LVS服务的搭建之NAT模式、DR模式的搭建实战

# LVS的概述 1/什么是LVS linux virtural server的简称&#xff0c;也就是linxu虚拟机服务器&#xff0c;使用lvs可以达到的技术目标是&#xff1a;通过linux达到负载均衡技术和linux操作系统实现一个高性能高可用的linux服务器集群&#xff0c;他具有良好的可靠性&#xff0…...

Raft分布式存储

文章目录 前言一、项目大纲二、Raft模块1.Raft介绍2.大致内容Leader与选举日志同步、心跳raft日志的两个特点 3.主要流程1. raft类的定义关键函数m_nextIndex 和 m_matchIndex作用 2.启动初始化3.竞选leaderelectionTimeOutTicker:doElectionsendRequestVoteRequestVote 4.日志…...

【Linux】使用nm命令查看动态库包含的符号表

【Linux】使用nm命令查看动态库包含的符号表 文章目录 【Linux】使用nm命令查看动态库包含的符号表1. nm的简介2. nm的使用3. nm查找具体的函数名或变量名Reference 1. nm的简介 nm命令来自name的简写。nm命令常用于查看二进制文件中的符号表&#xff0c;通常用于静态库和可执…...

你还不知道苹果手机截长图的方法?4 种方法都可以

苹果手机截长图 先给大家介绍第一个苹果手机截长图的方法&#xff0c;如果你是在 Safari 浏览器中想要截图分享的话&#xff0c;浏览器截图自带可以截取全页的选项&#xff0c;让你实现截长屏的操作。首先找到你想要截取的网页&#xff0c;然后按下手机的电源按键以及音量按键…...

C++选择题带答案

1. 在定义成员函数时给出的成员函数的正确标记是 (1) 。 (a) <类名>.<函数名> (b) <类名>::<函数名> (c) <对象名>.<函数名> (d) <对象名>::<函数名> 2&#xff0e;以下关于函数指针的叙述中&#xff0c;正确…...

Unity动画模块 之 简单创建一个序列帧动画

本文仅作笔记学习和分享&#xff0c;不用做任何商业用途 本文包括但不限于unity官方手册&#xff0c;unity唐老狮等教程知识&#xff0c;如有不足还请斧正​ 1.什么是序列帧动画 序列帧动画简单来讲就是通过连续播放一系列静态图像&#xff0c;形成动态视觉效果的过程&#xff…...

学会高效记录并整理编程学习笔记

文章目录 一、前言二、建议和方法2.1 明确笔记目的2.2 选择合适的工具2.3 结构化笔记2.4 高效记录技巧2.5 图文并茂2.6 定期回顾与整理2.7 利用搜索与链接2.8 分享与交流2.9 实践与应用 三、总结 一、前言 高效记录并整理编程学习笔记是提升学习效率和巩固知识的重要手段&…...

Llama 3.1中文微调数据集已上线,超大模型一键部署

7 月的 AI 圈真是卷完小模型卷大模型&#xff0c;精彩不停&#xff01;大多数同学都能体验 GPT-4o、Mistral-Nemo 这样的小模型&#xff0c;但 Llama-3.1-405B 和 Mistral-Large-2 这样的超大模型让很多小伙伴犯了难。 别担心&#xff01;hyper.ai 官网在教程板块为大家提供了…...

css实现太极图

<template><div><!-- 太极图 --><div class"all"><div class"left box"></div><div class"right box"></div><div class"black"><div class"inner_white"><…...

Android 13 移植EthernetSettings/Ethernet更新

移植EthernetSettings Android 13 在Settings搜索没有发现以太网设置,应该是移除了,但是客户的设备需要,所以移植Android 11的. 以太网相关的功能在Android13中进行模块化,提取到packages/modules/Connectivity/中, EthernetManager相关代码从framework移到packages/modules/…...

极狐GitLab 如何设置访问令牌前缀?

极狐GitLab 是 GitLab 在中国的发行版&#xff0c;专门面向中国程序员和企业提供企业级一体化 DevOps 平台&#xff0c;用来帮助用户实现需求管理、源代码托管、CI/CD、安全合规&#xff0c;而且所有的操作都是在一个平台上进行&#xff0c;省事省心省钱。可以一键安装极狐GitL…...

leetcode日记(72)最大矩形

依旧是看了答案才知道大概方法…太难想到了 和上一道题思路相似&#xff01;可以直接调用上题的函数&#xff0c;只不过调用前的准备非常难想到&#xff0c;就是建造形状相同的矩阵&#xff0c;第i行j列的元素是i行中j列前相邻的“1”的个数。 class Solution { public:int m…...

自驾畅游保定:参观总督署,品美食文化

这是学习笔记的第 2490篇文章 前几天跟孩子聊天&#xff0c;孩子说暑假都没出去玩了&#xff0c;暑假旅行的作业咋写&#xff1f;让我有满满的负疚感&#xff0c;去附近的公园、吃点美食不算旅游&#xff0c;得了&#xff0c;得安排一下一日游。 几个月前心心念的去保定&#x…...

我常用的几个傻瓜式爬虫工具,收藏!

爬虫类工具主要两种&#xff0c;一种是编程语言第三方库&#xff0c;比如Python的scrapy、selenium等&#xff0c;需要有一定的代码基础&#xff0c;一种是图形化的web或桌面应用&#xff0c;比如Web Scraper、后羿采集器、八爪鱼采集器、WebHarvy等&#xff0c;接近于傻瓜式操…...

数据分析2 Numpy+Scipy+Matplotlib+Pandas

3.设置坐标范围 mp.xlim(水平坐标最小值, 水平坐标最大值) mp.ylim(垂直坐标最小值, 垂直坐标最大值) 代码&#xff1a;plt3.py 4.设置坐标刻度 mp.xticks(位置序列[, 标签序列]) mp.yticks(位置序列[, 标签序列]) 代码&#xff1a;plt4.py 5.设置坐标轴 坐标轴名&#xff1a;l…...

手机IP地址:是根据网络还是设备决定的?

在日益数字化的今天&#xff0c;手机已经成为我们日常生活中不可或缺的一部分。它不仅是我们沟通的桥梁&#xff0c;更是我们获取信息、享受娱乐和完成工作的得力助手。然而&#xff0c;在使用手机上网的过程中&#xff0c;你是否曾经好奇过手机的IP地址是如何被分配的&#xf…...

数据结构-常见的七大排序

上节中我们学习了七大排序中的五种(插入排序、希尔排序、堆排序、选择排序、交换排序) 数据结构-常见的七大排序-CSDN博客 这节我们将要学习快速排序(hoare、指针法、挖洞法(快排的延伸)、快速排序非递归(栈)) 1.快速排序 1.1 hoare法 1.1思路 1.选出一个key&#xff0c;一…...

逻辑回归:给不确定性划界的分类大师

想象你是一名医生。面对患者的检查报告&#xff08;肿瘤大小、血液指标&#xff09;&#xff0c;你需要做出一个**决定性判断**&#xff1a;恶性还是良性&#xff1f;这种“非黑即白”的抉择&#xff0c;正是**逻辑回归&#xff08;Logistic Regression&#xff09;** 的战场&a…...

【SQL学习笔记1】增删改查+多表连接全解析(内附SQL免费在线练习工具)

可以使用Sqliteviz这个网站免费编写sql语句&#xff0c;它能够让用户直接在浏览器内练习SQL的语法&#xff0c;不需要安装任何软件。 链接如下&#xff1a; sqliteviz 注意&#xff1a; 在转写SQL语法时&#xff0c;关键字之间有一个特定的顺序&#xff0c;这个顺序会影响到…...

mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包

文章目录 现象&#xff1a;mysql已经安装&#xff0c;但是通过rpm -q 没有找mysql相关的已安装包遇到 rpm 命令找不到已经安装的 MySQL 包时&#xff0c;可能是因为以下几个原因&#xff1a;1.MySQL 不是通过 RPM 包安装的2.RPM 数据库损坏3.使用了不同的包名或路径4.使用其他包…...

大数据学习(132)-HIve数据分析

​​​​&#x1f34b;&#x1f34b;大数据学习&#x1f34b;&#x1f34b; &#x1f525;系列专栏&#xff1a; &#x1f451;哲学语录: 用力所能及&#xff0c;改变世界。 &#x1f496;如果觉得博主的文章还不错的话&#xff0c;请点赞&#x1f44d;收藏⭐️留言&#x1f4…...

深度学习水论文:mamba+图像增强

&#x1f9c0;当前视觉领域对高效长序列建模需求激增&#xff0c;对Mamba图像增强这方向的研究自然也逐渐火热。原因在于其高效长程建模&#xff0c;以及动态计算优势&#xff0c;在图像质量提升和细节恢复方面有难以替代的作用。 &#x1f9c0;因此短时间内&#xff0c;就有不…...

AI+无人机如何守护濒危物种?YOLOv8实现95%精准识别

【导读】 野生动物监测在理解和保护生态系统中发挥着至关重要的作用。然而&#xff0c;传统的野生动物观察方法往往耗时耗力、成本高昂且范围有限。无人机的出现为野生动物监测提供了有前景的替代方案&#xff0c;能够实现大范围覆盖并远程采集数据。尽管具备这些优势&#xf…...

【Elasticsearch】Elasticsearch 在大数据生态圈的地位 实践经验

Elasticsearch 在大数据生态圈的地位 & 实践经验 1.Elasticsearch 的优势1.1 Elasticsearch 解决的核心问题1.1.1 传统方案的短板1.1.2 Elasticsearch 的解决方案 1.2 与大数据组件的对比优势1.3 关键优势技术支撑1.4 Elasticsearch 的竞品1.4.1 全文搜索领域1.4.2 日志分析…...

水泥厂自动化升级利器:Devicenet转Modbus rtu协议转换网关

在水泥厂的生产流程中&#xff0c;工业自动化网关起着至关重要的作用&#xff0c;尤其是JH-DVN-RTU疆鸿智能Devicenet转Modbus rtu协议转换网关&#xff0c;为水泥厂实现高效生产与精准控制提供了有力支持。 水泥厂设备众多&#xff0c;其中不少设备采用Devicenet协议。Devicen…...

Python学习(8) ----- Python的类与对象

Python 中的类&#xff08;Class&#xff09;与对象&#xff08;Object&#xff09;是面向对象编程&#xff08;OOP&#xff09;的核心。我们可以通过“类是模板&#xff0c;对象是实例”来理解它们的关系。 &#x1f9f1; 一句话理解&#xff1a; 类就像“图纸”&#xff0c;对…...

AWS vs 阿里云:功能、服务与性能对比指南

在云计算领域&#xff0c;Amazon Web Services (AWS) 和阿里云 (Alibaba Cloud) 是全球领先的提供商&#xff0c;各自在功能范围、服务生态系统、性能表现和适用场景上具有独特优势。基于提供的引用[1]-[5]&#xff0c;我将从功能、服务和性能三个方面进行结构化对比分析&#…...