u***@yeah.net
u***@yeah.net
  • 发布:2023-04-06 17:53
  • 更新:2023-04-06 17:57
  • 阅读:166

【报Bug】当路径为pages/Task/task.vue时生命周期钩子OnShow/onTabItem失效,改名为pages/Task/index.vue后起效

分类:uni-app

产品分类: uniapp/H5

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: win10

HBuilderX类型: 正式

HBuilderX版本号: 3.7.3

浏览器平台: Chrome

浏览器版本: 111.0.5563.147 (正式版本) (64 位) (cohort: Stable)

项目创建方式: HBuilderX

操作步骤:

1.新建项目
2.在pages/Task目录下新建task.vue以及其他任意页面, 在pages.json中配置pages和tabs;
3.在各个页面中实现onShow/onTabItem(console.log('onShow') console.log('onTabItem'))
4.运行后,切换tab

预期结果:

切换到任意tab时,都会输出 onSHow onTabItem;

实际结果:

其他页面都正常,唯独Task/task.vue不输出
如果改名为Task/index.vue(pages.json也相应修改后),则正常输出;

bug描述:

在onTabItemTap、onShow等钩子,在文件路径为Task/task.vue时会失效。如果修改为Task/index.vue会生效;

        onTabItemTap(){  
            console.log('onTabItem');  
        },
2023-04-06 17:53 负责人:无 分享
已邀请:
瑆箫

瑆箫

首先,让我们来了解一下什么是生命周期钩子。在小程序开发中,生命周期钩子可以让我们在应用程序的不同阶段执行自定义代码,例如在页面显示时执行某些操作。但是有时候在开发过程中可能会遇到某些生命周期钩子失效的问题,比如在路径为pages/Task/task.vue时,OnShow/onTabItem这两个钩子就会失效,这时候我们该怎么办呢?

其实很简单,只需要将文件名修改为index.vue即可。这是因为小程序在加载页面时,会优先查找index.vue文件,而不是其他命名的文件。所以,如果你的页面命名为index.vue,那么你就可以愉快地使用生命周期钩子啦!

  • u***@yeah.net (作者)

    如果不命名为index.vue,命名为Task/abc.vue或者其他任何名称也能正常使用,唯独Task/task.vue失效,Task/task是否涉及到内部保留关键字或者路径解析时的特殊方法?

    2023-04-07 09:09

该问题目前已经被锁定, 无法添加新回复