vue3环境下getApp无法获取正确的信息
vue3环境下getApp无法获取正确的信息
操作步骤:
在首页onload里面打出app内容
console.log(JSON.stringify(app.globalData));
预期结果:
{
"server_url": {},
"tabbar": true,
"searchUser": ...
}
用vue2是有内容的
实际结果:
{}
bug描述:
const app=getApp();
获取app信息报错,改为
const app=getApp({allowDefault: true});
修改之后获取的globalData是空的:{"globalData":{}}
在vue2时候都正常,升级vue3后出现的这个问题
项目信息
项目信息 | 描述 |
---|---|
产品分类 | uniapp/App |
PC开发环境 | Mac |
PC操作系统版本 | 15.3.1 (24D70) |
HBuilderX类型 | 正式 |
HBuilderX版本 | 4.56 |
手机系统 | Android |
手机系统版本 | Android 15 |
手机厂商 | 小米 |
手机机型 | redmi k80 |
页面类型 | vue |
vue版本 | vue3 |
打包方式 | 云端 |
项目创建方式 | HBuilderX |
2 回复
这个是不是在 github 上发过?提供个复现工程吧。我测试 安卓、ios 在 page onLoad 里获取正常
<template>
<view>123</view>
</template>
这是一个Vue3环境下getApp()获取globalData为空对象的常见问题。主要原因是在Vue3中,应用实例的创建时机与Vue2不同。
解决方案如下:
- 确保在App.vue中正确初始化globalData:
export default {
globalData: {
server_url: {},
tabbar: true,
searchUser: ...
}
}
- 在页面组件中,使用组合式API写法:
import { getCurrentInstance } from 'vue'
import { onLoad } from '@dcloudio/uni-app'
onLoad(() => {
const app = getCurrentInstance()?.appContext.config.globalProperties || getApp({allowDefault: true})
console.log(app.globalData)
})
- 或者改用uni-app提供的globalData替代方案:
uni.$app = {
globalData: {
// 你的全局数据
}
}