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

4 回复

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' }
回到顶部