uni-app getApp()获取到值错误
uni-app getApp()获取到值错误
示例代码:
console.log(getApp());
操作步骤:
使用4.14版本的HbuildX,运行安卓基座,执行console.log(getApp()),可复现
预期结果:
正常获取getApp()数据
实际结果:
当前页面路由列表,getCurrentPage()的值
bug描述:
使用真机调试,getApp()获取到值的和getCurrentPage()的值是一样的,vue2和vue3版本都是同样的结果
相关链接:
项目信息 | 详细信息 |
---|---|
产品分类 | uniapp/App |
PC开发环境 | Windows |
PC开发环境版本 | windows11 |
HBuilderX类型 | 正式 |
HBuilderX版本 | 4.14 |
手机系统 | Android |
手机系统版本 | Android 14 |
手机厂商 | 小米 |
手机机型 | xiaomi 14 Pro |
页面类型 | vue |
vue版本 | vue3 |
打包方式 | 云端 |
项目创建方式 | HBuilderX |
更多关于uni-app getApp()获取到值错误的实战教程也可以访问 https://www.itying.com/category-93-b0.html
HBuilderX 4.28.2024092502 已修复。
更多关于uni-app getApp()获取到值错误的实战教程也可以访问 https://www.itying.com/category-93-b0.html
版本4.55,内置浏览器好用,自定义基座还是获取不到 getApp() 报错:[warn]: getApp() failed. getApp({allowDefault: true}) 获取的内容不对:{“globalData”:{}}
一样的问题,最新版,用的华为手机真机调试不行,其他的手机没试过,h5是好的
在 uni-app
中,getApp()
是用于获取当前应用实例的方法。通常情况下,它应该返回 App()
函数中定义的全局对象。如果你在使用 getApp()
时获取到的值不正确,可能是以下几个原因导致的:
1. App()
函数未正确定义
确保你在 App()
函数中正确定义了全局对象,并且该对象在 getApp()
中被正确获取。
// app.js
App({
globalData: {
userInfo: null,
token: ''
}
});
// 在其他页面中使用
const app = getApp();
console.log(app.globalData); // 应该输出 { userInfo: null, token: '' }
2. getApp()
调用时机问题
getApp()
必须在 App()
函数执行之后调用才能获取到正确的应用实例。如果你在 App()
函数执行之前调用 getApp()
,可能会导致获取到的值为 undefined
或错误。
// 错误的调用时机
const app = getApp(); // 可能获取不到正确的实例
// 正确的调用时机
App({
globalData: {
userInfo: null,
token: ''
}
});
const app = getApp(); // 正确获取实例
3. getApp()
在非页面或组件中调用
如果你在非页面或组件的文件中调用 getApp()
,确保该文件在 App()
函数执行之后被加载。否则,getApp()
可能无法正确获取到应用实例。
4. App()
函数被多次执行
如果 App()
函数被多次执行,可能会导致 getApp()
获取到的实例不正确。确保 App()
函数只执行一次。
// 错误的多次执行
App({});
App({}); // 可能导致 getApp() 获取到的实例不正确
// 正确的单次执行
App({});
5. getApp()
返回的对象被修改
如果你在应用中对 getApp()
返回的对象进行了修改,可能会导致后续获取到的值不正确。确保在修改全局对象时,操作是安全的。
const app = getApp();
app.globalData.userInfo = { name: 'John' }; // 修改全局对象
// 在其他地方获取时,可能已经修改
const app2 = getApp();
console.log(app2.globalData.userInfo); // { name: 'John' }