Uniapp微信小程序开发:全局变量的使用

简介

本文介绍了在Vue3中实现全局属性共享的两种方法。

第一种是通过app.config.globalProperties全局挂载属性,结合getCurrentInstance()在组合式API中获取组件实例来访问全局属性。

第二种推荐使用provide/inject方案,更符合Vue3设计理念,适合跨层级传递属性,通过app.provide()全局提供属性,再使用inject()注入使用。

两种方式都能有效实现全局状态共享,其中provide/inject方式更组件化且类型安全。

使用 app.config.globalProperties + getCurrentInstance

全局挂载(在入口文件中)

javascript 复制代码
import { createSSRApp } from 'vue';
export function createApp() {
  const app = createSSRApp(App);
  // 挂载全局属性
  app.config.globalProperties.$Hello = 'Hello vue3'; 
  return {
    app
  };
}

在组合式 API 中使用

javascript 复制代码
<script setup>
import { getCurrentInstance } from 'vue';

// 获取组件实例
const instance = getCurrentInstance();

// 访问全局属性
const hello1 = instance.appContext.config.globalProperties.$Hello;
//(proxy 是组件实例的代理,包含全局属性)
const hello2=instance.proxy.$Hello

console.log(hello1); // 输出:Hello vue3
console.log(hello2); // 输出:Hello vue3
</script>

使用 provide/inject(推荐)

如果属性需要在多个组件中共享,provide/inject 是更符合 Vue 3 设计理念的方案,尤其适合跨层级传递。

全局 provide(在入口文件中)

javascript 复制代码
import { createSSRApp } from 'vue';
export function createApp() {
  const app = createSSRApp(App);
  // 全局提供属性
  app.provide('helloKey', 'Hello vue3(from provide)'); 
  return {
    app
  };
}

在组合式 API 中 inject 使用

javascript 复制代码
<script setup>
import { inject } from 'vue';

// 注入全局提供的属性(通过 key 匹配)
const hello = inject('helloKey'); 

console.log(hello); // 输出:Hello vue3(from provide)
</script>
相关推荐
良逍Ai出海5 小时前
Build in Public|为什么我开始做一款相册清理 App(听说有竞品年收益40W)
ios·uni-app·ai编程·coding
vx_dmxq2117 小时前
【微信小程序学习交流平台】(免费领源码+演示录像)|可做计算机毕设Java、Python、PHP、小程序APP、C#、爬虫大数据、单片机、文案
java·spring boot·python·mysql·微信小程序·小程序·idea
腾马科技9 小时前
小酒馆白酒饮料订单配送立即点餐存酒小程序源码
微信小程序·点餐小程序
学点程序9 小时前
AI辅助开发小程序的实践分享
小程序
vx_dmxq21120 小时前
【PHP考研互助系统】(免费领源码+演示录像)|可做计算机毕设Java、Python、PHP、小程序APP、C#、爬虫大数据、单片机、文案
java·spring boot·mysql·考研·微信小程序·小程序·php
蹦极的考拉21 小时前
夜间无法登录:ThinkPHP api接口 23:00 准时罢工的排查全纪录
小程序·thinkphp·api接口·无法登陆
vx_vxbs661 天前
【SSM电影网站】(免费领源码+演示录像)|可做计算机毕设Java、Python、PHP、小程序APP、C#、爬虫大数据、单片机、文案
java·spring boot·python·mysql·小程序·php·idea
我命由我123451 天前
微信开发者工具 - 模拟器分离窗口与关闭分离窗口
前端·javascript·学习·微信小程序·前端框架·html·js
G佳伟1 天前
‌微信小程序Webview转发页面空白问题解决方案‌
微信小程序·小程序
vx_vxbs661 天前
【SSM电动车智能充电服务平台】(免费领源码+演示录像)|可做计算机毕设Java、Python、PHP、小程序APP、C#、爬虫大数据、单片机、文案
java·spring boot·mysql·spring cloud·小程序·php·idea