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>
相关推荐
2601_963869954 小时前
力序健身房管理系统
微信小程序·小程序
郑州光合科技余经理6 小时前
同城外卖小程序开发:下单成功后,后台导出能不能对上用户端状态
开发语言·前端·git·后端·uni-app·php·ai编程
一 乐7 小时前
二手交易平台|基于springboot + vue二手交易平台(源码+数据库+文档)
java·数据库·vue.js·spring boot·小程序
拖孩12 小时前
给小程序加「一键发公众号贴图」,我把 wx.shareToOfficialAccount 的三个坑趟了一遍
前端·后端·微信小程序
微擎应用市场12 小时前
鲸飞云 PMS 系统 —— 现代化酒店运营的智能管理解决方案
小程序
疯狂小猫咪16 小时前
教务管理系统课时消课模块设计思路
大数据·小程序
白远山17 小时前
城市电竞陪玩调度系统实战:从派单算法到多端协同的架构拆解
java·架构·uni-app·需求分析
meiying883818 小时前
微信商城小程序怎么开发?2026 从店铺架构到下单链路的技术选型拆解
小程序
扶风ff1 天前
练题簿小程序:家庭在线练题,课后复习更简单
学习·小程序
白远山2 天前
上海24小时自助健身房系统软件开发实战指南
java·架构·uni-app·需求分析