Vue3 中使用组合式API和依赖注入实现自定义公共方法

news/2025/1/24 2:58:43/

组合式API

1.在项目根目录 src 文件夹下创建文件夹 utils ,创建 index.js 文件

2.抛出想要对外暴露的方法,以下是一个判断数据类型的方法

export function getType(params) {// 判断是否是基本类型let res = typeof paramsif (res !== 'object') {return res} else {// 判断复杂类型const typeStr = Object.prototype.toString.call(params)const match = typeStr.match(/\[object (\w+)\]/)if (match) {return match[1].toLowerCase()}return 'unknown'}
}

3.在 main.js 文件写如下代码,其中注释已附上

import { createApp } from 'vue'
import './style.css'
import App from './App.vue'
// 引入方法文件
import * as utils from './utils'
// 创建vue实例
const app = createApp(App)
// 全局挂载
app.config.globalProperties.$utils = utils
app.mount('#app')

4.在组件中使用

<script setup>
import { ref, onMounted, getCurrentInstance } from 'vue'defineProps({msg: String,
})onMounted(() => {// 使用组合式API获取当前实例const instance = getCurrentInstance()if (instance && instance.proxy) {let res = instance.proxy.$utils.getType(1)console.log('====================================')console.log(res)console.log('====================================')}
})
</script><template><div>{{ msg }}</div>
</template><style scoped>
.read-the-docs {color: #888;
}
</style>

依赖注入

1、2步骤是一样的,不过多赘述

3.在 main.js 文件写如下代码,其中注释已附上

import { createApp } from 'vue'
import './style.css'
import App from './App.vue'
// 引入方法文件
import * as utils from './utils'
// 创建vue实例
const app = createApp(App)
// 依赖注入
app.provide('utils', utils)
app.mount('#app')

4.在组件中使用

<script setup>
import { ref, onMounted, inject } from 'vue'defineProps({msg: String,
})onMounted(() => {// 依赖注入const utils = inject('utils')let res = utils.getType(123)console.log('====================================')console.log(res)console.log('====================================')
})
</script><template><div>{{ msg }}</div>
</template><style scoped>
.read-the-docs {color: #888;
}
</style>

http://www.ppmy.cn/news/1565662.html

相关文章

MVCC在MySQL中实现无锁的原理

一&#xff1a;基础知识 我们知道MySQL是多线程并发处理任务的。MySQL使用了MVCC来实现事务并发的无锁机制。 而且我们还需要知道MySQL的四种隔离级别&#xff1a;读未提交&#xff0c;读已提交&#xff08;RC&#xff09;&#xff0c;可重复读&#xff08;RR&#xff09;&am…

21. C语言 `typedef`:类型重命名

本章目录: 前言1. 什么是 typedef&#xff1f;语法示例&#xff1a;基本类型的别名 2. typedef 为结构体定义别名示例&#xff1a;为结构体定义别名 3. typedef vs #define&#xff1a;两者的区别(1) **作用范围和处理方式**(2) **类型别名的处理**(3) **多个变量的声明**(4) *…

工程上LabVIEW常用的控制算法有哪些

在工程应用中&#xff0c;LabVIEW常用的控制算法有很多&#xff0c;它们广泛应用于自动化、过程控制、机器人、测试测量等领域。以下是一些常见的控制算法&#xff1a; 1. PID 控制 用途&#xff1a;PID&#xff08;比例-积分-微分&#xff09;控制是最常用的反馈控制算法&…

Docker核心命令与Yocto项目的高效应用

随着软件开发逐渐向分布式和容器化方向演进&#xff0c;Docker 已成为主流的容器化技术之一。它通过标准化的环境配置、资源隔离和高效的部署流程&#xff0c;大幅提高了开发和构建效率。Yocto 项目作为嵌入式 Linux 系统构建工具&#xff0c;与 Docker 的结合进一步增强了开发…

初学stm32 --- CAN

目录 CAN介绍 CAN总线拓扑图 CAN总线特点 CAN应用场景 CAN物理层 CAN收发器芯片介绍 CAN协议层 数据帧介绍 CAN位时序介绍 数据同步过程 硬件同步 再同步 CAN总线仲裁 STM32 CAN控制器介绍 CAN控制器模式 CAN控制器模式 CAN控制器框图 发送处理 接收处理 接收过…

Linux初识:【Linux软件包管理器yum】【Linux编辑器-vim的使用】【Linux编译器-gcc/g++的使用】

目录 一.Linux软件包管理器yum 什么是软件包 查看软件包 卸载 怎么知道下载路径&#xff1f; 二.Linux编辑器-vim的使用 2.1vim的基本概念 2.2vim的基本操作 gg&#xff08;快速回到第一行的最开始&#xff09; 移动光标的其他快捷方式 2.3vim正常模式命令集 插入…

青少年CTF练习平台 PHP的XXE

访问靶场是个phpinfo()页面 题目提示是PHP的XXE&#xff0c;访问simplexml_load_string.php文件 get请求是空白&#xff0c;要使用post方法请求 尝试读取文件,读取/etc/passwd文件 <?xml version"1.0" encoding"utf-8" ?> <!DOCTYPE xxe [ &l…

基于深度学习的视觉检测小项目(十五) 用户的登录界面

用户管理离不开的是消息框&#xff08;QMessageBox&#xff09;和对话框&#xff08;QDialog&#xff09;&#xff0c;比如对话框用于用户名和密码输入&#xff0c;消息框用于提示登录成功、密码错误。 • 基础知识&#xff1a;PySide6&#xff08;PyQT5&#xff09;的常用对话…