uni-app nvue使用uni.preloadPage页面预加载tabbar页面时,进入被加载的tabbar页面tabbar消失,苹果安卓均如此

发布于 1周前 作者 ionicwang 来自 uni-app

uni-app nvue使用uni.preloadPage页面预加载tabbar页面时,进入被加载的tabbar页面tabbar消失,苹果安卓均如此

测试过的手机

华为nova6 苹果13

操作步骤

uniapp nvue vue3使用uni.preloadPage页面预加载tabbar页面的时候在进入被加载tabbar页面里时tabbar消失了.试不同的tabbar页面都这样,苹果安卓同样

预期结果

预加载tabbar页面

实际结果

tabbar消失

bug描述

uniapp nvue vue3使用uni.preloadPage页面预加载tabbar页面的时候在进入被加载tabbar页面里时tabbar消失了.试不同的tabbar页面都这样,苹果安卓同样

相关链接

开发环境与项目信息

详情
产品分类 uniapp/App
PC开发环境操作系统 Windows
PC开发环境操作系统版本号 win10
HBuilderX类型 Alpha
HBuilderX版本号 3.8.1
手机系统 全部
手机厂商 华为
页面类型 nvue
vue版本 vue3
打包方式 云端
项目创建方式 HBuilderX

22 回复

跪求回复啊


顶顶顶顶

以后不在本论坛提问题了,浪费时间

uniappnvue vue3项目 新创建来一个项目又试了下,还是一样的tabbar消失
有两个 tab 页面:A 和 B。
当首次打开应用程序并打开页面 A 时,使用 uni.preloadPage 预加载页面 B。
当点击 tab 切换到页面 B 时,tabbar 消失了。
// 在页面 A 中预加载页面 B uni.preloadPage({ url: ‘/pages/B/B’, success: function(res) { console.log(‘预加载成功’); } });
// 在页面 B 中显示 tabbar onShow() { uni.showTabBar({ animation: true }); }
这样也不行 只要点击预加载过的tabbar页面tabbar就会消失

为什么要使用uni.preloadPage跳转页面呢

想体验好一点,安卓打开页面卡的一批

问题复现,已反馈相关人员排查,已加分感谢反馈!

真服了,一个 bug 到现在 8 个月了还没解决

还没解决,是根本就放弃了不打算解决吧

在使用uni-app进行开发时,nvue页面与普通的Vue页面在处理上存在一些差异,特别是在涉及到页面预加载和tabbar显示等方面。针对你提到的在使用uni.preloadPage预加载tabbar页面时,进入被加载的tabbar页面后tabbar消失的问题,这通常是因为nvue页面的tabbar管理方式和Vue页面有所不同所导致的。

为了解决这个问题,我们需要确保在预加载页面时,tabbar的状态能够正确保持。以下是一个可能的解决方案,通过代码示例来展示如何在预加载tabbar页面时保持tabbar的显示:

  1. 确保tabbar配置正确:首先,确保在pages.json中正确配置了tabbar页面。
"tabBar": {
    "list": [
        {
            "pagePath": "pages/index/index",
            "text": "首页"
        },
        {
            "pagePath": "pages/other/other",
            "text": "其他"
        }
    ]
}
  1. 使用uni.preloadPage预加载页面:在App启动时或者需要预加载的时候调用uni.preloadPage
// 在App.vue的onLaunch或onShow生命周期函数中预加载页面
onLaunch() {
    uni.preloadPage({
        url: '/pages/other/other' // 预加载其他页面
    });
}
  1. 在nvue页面中管理tabbar:由于nvue页面和Vue页面在渲染机制上的差异,如果直接使用预加载可能会导致tabbar显示问题。一种可能的解决方案是在nvue页面中手动管理tabbar的显示和隐藏。这通常涉及到在nvue页面中使用自定义的tabbar组件,并通过监听页面生命周期事件来控制tabbar的显示状态。

例如,在nvue页面的onShowonHide事件中更新tabbar的显示状态:

export default {
    onShow() {
        // 页面显示时,确保tabbar显示(如果需要的话,可以调用自定义tabbar组件的显示方法)
        this.$refs.customTabbar.show();
    },
    onHide() {
        // 页面隐藏时,隐藏tabbar(同样,调用自定义tabbar组件的隐藏方法)
        this.$refs.customTabbar.hide();
    }
}

注意:上述代码中的this.$refs.customTabbar.show()this.$refs.customTabbar.hide()是假设你有一个自定义的tabbar组件,并且已经通过ref属性进行了引用。你需要根据自己的实际情况来调整这部分代码。

通过上述方法,你可以在预加载tabbar页面时保持tabbar的显示状态,从而解决你遇到的问题。

回到顶部