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

ops/2025/1/22 7:02:58/

组合式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/ops/152128.html

相关文章

ubuntu_查询连接当前服务器的用户ip

在Ubuntu系统中&#xff0c;如果你想查询当前连接到服务器的用户的IP地址&#xff0c;你可以通过以下几种方法来实现&#xff1a; 1. 使用last和awk命令 last命令可以显示最近登录到系统的用户信息&#xff0c;包括他们的IP地址&#xff08;如果他们是远程登录的&#xff09;…

Linux 时间操作详解

Linux 时间操作详解 1. Linux 中的时间概念2. time_t&#xff1a;表示时间的基本数据类型示例代码&#xff1a;获取当前时间 3. 格式化时间&#xff1a;tm 结构体与 localtime() 函数示例代码&#xff1a;将 time_t 转换为本地时间 4. 高精度时间操作&#xff1a;chrono 库示例…

Java TCP可靠传输(1)

TCP 可靠传输 一. 确认应答 由发送方填充&#xff0c;再由接收方在序号的基础上1&#xff0c;填充到确认序号中&#xff0c;来表示已经接收到前面发送的&#xff0c;表明下一个从哪个位置发送。 二. 超时重传 数据在网络上传输时会经过很多网络设备&#xff0c;如果其中一个…

嵌入式知识体系分析+数据结构概念+时间复杂度计算规则+顺序表的原理与实现

数据结构概述 基本概念 数据结构指的是计算机存储数据和组织数据的方式&#xff0c;存储数据和组织数据的目的是为了后期对数据的再次利用&#xff0c;所以存储的数据一般是具有一个或者多个特定关系的集合&#xff0c;利用不同的数据结构可以提高数据的访问效率。 思考&am…

26岁备考PMP,经验分享

26岁普通女孩因考了个PMP.... 突然好喜欢现在的自己&#xff5e; 现在的生活尽管没有很富有&#xff0c;但我现在工作真的很满意&#xff0c;周末双休薪资也不错&#xff0c;没有依靠任何人&#xff0c;全都是我自己努力得来的。 想想以前的我因为学历自卑&#xff0c;到处讨好…

第四届机器学习、云计算与智能挖掘国际会议

一、会议信息 会议名称&#xff1a;第四届机器学习、云计算与智能挖掘国际会议&#xff08;MLCCIM 2025&#xff09;​​​​​​​ 会议地点&#xff1a;中国漠河 会议时间&#xff1a;2025年7月21-25日 支持单位&#xff1a;佛山市人工智能学会、佛山大学 二、大会主席 …

go语言zero框架通过chromedp实现网页在线截图的设计与功能实现

在 GoZero 框架中实现网页在线截图的功能&#xff0c;可以通过集成 chromedp 库来控制 Chrome 浏览器进行截图。chromedp 是一个基于 Chrome DevTools 协议的 Go 包&#xff0c;可以用来在 Go 程序中模拟浏览器操作&#xff0c;如页面截图、DOM 操作、表单提交等。 下面是一个…

CSDN年度回顾:技术征途上的坚实步伐

嘿&#xff0c;时光过得可真快呀&#xff0c;就像那匹跑得飞快的白马&#xff0c;嗖的一下&#xff0c;2024 年的日历就这么悄无声息地翻到了最后一页。这会儿我回头看看在 CSDN 上度过的这一年&#xff0c;心里那叫一个感慨万千&#xff0c;满满的都是喜悦&#xff0c;就像心里…