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

vue3 挂载全局公共方法/变量/数据

前言:
最近开始接触vue3, 需要全局挂在公共函数,Vue.prototype已经不再适用vue3,官网转而推荐使用 app.config.globalProperties 或者 provide;

app-config-globalproperties 官方地址如下:

https://cn.vuejs.org/api/application.html#app-config-globalproperties

vue3 provide 官方地址如下:

https://cn.vuejs.org/api/composition-api-dependency-injection.html#provide

vue2 provide 官方地址如下:

https://v2.cn.vuejs.org/v2/api/#provide-inject

原文地址:点击文字跳转原文

扫码关注公共号查看原文可以提问

在这里插入图片描述

-------------------------正文开始---------------------
1、在 main.js 通过两种方法注入全局函数 asyncDate ,分别利用了 app.config.globalProperties 和 provide 。

注入全局变量示例代码如下:


// main.jsimport {createSSRApp
} from "vue";
import App from "./App.vue";
import asyncDate from "./common/date.js"
export function createApp() {const app = createSSRApp(App);// 注入全局 asyncDateapp.provide('$asyncDate', asyncDate);// 挂在全局 $asyncDate app.config.globalProperties.$asyncDate=asyncDate;return {app};
}

// vue3 setup语法

2、获取全局变量示例代码如下:


// vue3 setup语法
<script lang="ts" setup>
import {getCurrentInstance,inject} from 'vue';
const {proxy}=getCurrentInstance();
/* 如果采用 app.config.globalProperties 设置的 $asyncDate ,使用
获取 peoxy.$asyncDate 获取;
*/
let asyncDate=peoxy.$asyncDate;
/* 如果采用 provide 设置的 $asyncDate ,使用获取 inject 获取;
*/
let asyncDate=inject('$asyncDate');
</script>

vue 中的 getCurrentInstance 方法返回了 ctx 和 proxy,控制台打印 ctx 和 proxy 发现和 vue2.x 中的 this 等同,习惯使用 this 的朋友可以用 proxy 进行替代。

3、vue2 语法获取全局变量示例代码如下:

<script>
export default{inject: ['$asyncDates'],mounted() {let asyncDate=this.$asyncDate;}
}
</script>

3.1 采用 app.config.globalProperties 或者provide 设置的 $asyncDate , 都可以直接使用this 获取;

3.2 如果采用 provide 设置 $asyncDate , 需要配合 inject 一起使用。

provide / inject 注意事项:

这对选项需要一起使用,以允许一个祖先组件向其所有子孙后代注入一个依赖,不论组件层次有多深,并在其上下游关系成立的时间里始终生效。


http://www.mrgr.cn/news/39020.html

相关文章:

  • IPD变革中,数据治理是关键
  • 在线远程考试|基于springBoot的在线远程考试系统设计与实现(附项目源码+论文+数据库)
  • 海滨体育馆管理系统:SpringBoot实现技巧与案例
  • 关于没有启用root问题,分区表挂载错误,导致系统无法启动
  • 奥顺居PHP测算引流SEO程序_八字风水_起名解梦_星座生肖综合门户源码
  • CEX上币趋势分析:Infra赛道与Ton生态的未来
  • 光控资本:什么是优质股,近期估值创历史新低的优质股盘点?
  • Hugging Face + JuiceFS:多用户多节点环境下提升模型加载效率
  • vue中使用jsencrypt加密
  • Flux【lora模型】【真人模型】:极致逼真,小红书真实风格|旅游拍照|景点打卡
  • 网站建设中,https协议和http协议分别是什么,有什么区别?
  • Unity实战案例全解析:RTS游戏的框选和阵型功能(4)阵型功能
  • 前端一文搞懂Promise 再也不害怕面试官问的问题啦~
  • cuda基础知识
  • 用CMake添加gtest测试用例gtest_discover_tests指令函数的分析
  • 扣子创建的智能体,发布成api,使用java进行调用
  • 关于PHP 匿名函数在处理数据结构中的应用
  • 深入解析网络通信的四大关键要素:网卡、MAC地址、IP地址、子网掩码与端口
  • 【Bug】解决 Ubuntu 中 “error: Unable to Find Python3 Executable” 错误
  • 代替@Autowire去注入,使你的代码更简便