uni-app 使用uni.switchTab调tabBar页面不触发onshow,onload生命周期
uni-app 使用uni.switchTab调tabBar页面不触发onshow,onload生命周期
详细问题描述
(DCloud产品不会有明显的bug,所以你遇到的问题大都是在特定环境下才能重现的问题,请仔细描述你的环境和重现方式,否则DCloud很难排查解决你的问题)
[内容]
重现步骤
[步骤] 从tabbar页面跳到子页面在通过uni.switchTab跳回tabbar页面 [结果] 不触发onShow生命周期 [期望] 触发onShow生命周期 [如果语言难以表述清晰,拍一个视频或截图,有图有真相]
IDE运行环境说明
[HBuilder 或 HBuilderX。如果你用其他工具开发uni-app,也需要在此说明]
- [IDE版本号]: 2.6.5 正式版最新版本
- [mac版本号]:
uni-app运行环境说明
[运行端是h5或app或某个小程序?] app [运行端版本号]:
App运行环境说明
[Android版本号]:
- [模拟器型号]:
附件
[IDE问题请提供HBuilderX运行日志。菜单帮助-查看运行日志,点右键打开文件所在目录,将log文件压缩成zip包上传]
[App问题请提供可重现问题的代码片段,你补充的细一点,问题就解决的快一点]
[App安装包或H5地址]
[可重现代码片段]
联系方式
[QQ]
从子页面navigateBack回去就能触发onshow
用这个报错
同样遇到了这个问题
同样遇到这种,请问怎么解决,2楼的方法试了好像不行,那应该怎么跳转
在需要执行onShow的tabbar页面 用vue的activated周期来处理onShow的逻辑,不触发页面onShow但是触发vue的activated周期
activated(){
// onShow逻辑写到这
},
其他行,app不行
我也遇到了,真服了啊
我也是 不执行,要刷新才可以,怎么解决?
可以从子页面navigateBack返回到tabbar页面,或者在跳转子页面的时候用 uni.reLaunch,再用uni.switchTab 跳转到tabbar页面
回复 喜欢技术的前端: 这个我试是可以的,就是用uni.reLaunch跳到子页面,子页面就回不去了。。。
我也遇到了
我也遇到了,并且,偶发
在uni-app中,使用uni.switchTab
进行页面跳转时,确实可能不会触发目标页面的onShow
和onLoad
生命周期方法,这是uni-app框架设计的一部分。uni.switchTab
主要用于在tabBar页面之间进行切换,而这些页面的生命周期管理与普通页面有所不同。
以下是一些相关的代码示例和解释,帮助你理解如何处理这种情况。
示例场景
假设我们有两个tabBar页面:Home
和Profile
。
tabBar配置(pages.json)
{
"tabBar": {
"list": [
{
"pagePath": "pages/home/home",
"text": "Home"
},
{
"pagePath": "pages/profile/profile",
"text": "Profile"
}
]
}
}
Home页面(pages/home/home.vue)
<template>
<view>Home Page</view>
</template>
<script>
export default {
onLoad() {
console.log('Home onLoad');
},
onShow() {
console.log('Home onShow');
}
}
</script>
Profile页面(pages/profile/profile.vue)
<template>
<view>Profile Page</view>
</template>
<script>
export default {
onLoad() {
console.log('Profile onLoad');
},
onShow() {
console.log('Profile onShow');
}
}
</script>
使用uni.switchTab进行页面切换
在某个页面或组件中,使用uni.switchTab
进行页面切换:
<template>
<view>
<button @click="switchToProfile">Go to Profile</button>
</view>
</template>
<script>
export default {
methods: {
switchToProfile() {
uni.switchTab({
url: '/pages/profile/profile'
});
}
}
}
</script>
注意点
- 首次加载:当你首次打开应用并导航到
Profile
页面时,onLoad
和onShow
都会被触发。 - 后续切换:当你已经在
Home
页面,然后通过uni.switchTab
切换到Profile
页面时,Profile
页面的onLoad
不会再次触发,但onShow
会被触发。
解决方案
如果你需要在切换tab时执行一些操作,可以考虑在onShow
生命周期中处理,或者利用全局状态管理(如Vuex)来监听页面状态的变化,并在需要时执行相应操作。
希望这些示例和解释能帮助你理解uni.switchTab
在uni-app中的行为。