收藏
回答

onTabItemTap 触发机制异常

问题模块 框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
API和组件 小程序 Bug onTabItemTap 客户端 6.7.2 2.2.4

- 当前 Bug 的表现(可附上截图)


我想做一个当用户在首页点击底部首页的 tabbar(第一个)时,页面刷新的功能,于是在首页的 js 文件中写了 onTabItemTap 事件,且其他的 tabbar 页面没有写 onTabItemTap 事件。


在首页中点击首页的 tabbar(第一个)时,的确会执行 onTabItemTap 函数。但是在其他未设置 onTabItemTap 的 tabbar 页面中,点击首页的 tabbar(第一个)时,会跳转到首页并且也执行首页 js 中的 onTabItemTap 函数。


目前在 Android 和 iOS 端都出现这个问题,在开发工具中没有出现。


- 预期表现


从其他 tabbar 页面切换到某一 tabbar 页面时,不执行该页面中定义的 onTabItemTap 函数。

最后一次编辑于  2018-08-27  (未经腾讯允许,不得转载)
邀请回答
复制链接收藏关注问题回答

14 个回答

  • 春野
    春野
    2018-08-29

    如果点击任意一个 tabBar 都会触发 onTabItemTap,那么我为什么要用这个东西,直接用 onShow 不就行了么!

    2018-08-29
    赞同 11
    回复
  • cunjinli
    cunjinli
    2018-08-27

    从其他 tabbar 页面切换到某一 tabbar 页面时,不执行该页面中定义的 onTabItemTap 函数。

    你好,这个逻辑不符合预期,你如果不想执行里面的逻辑,可以通过一些变量来控制!

    2018-08-27
    赞同
    回复 8
    • 箩灬卟
      箩灬卟
      2018-08-28

      我们需要监听tap切换后处理当前tap页面的事件。比如当前页面有一个弹层,但是小程序的自定义弹层遮不住tap,所以能被tap切换页面。我们需要知道用户点击了其它tap,然后关闭前一tap的弹层

      2018-08-28
      赞同
      回复
    • 西赛德李
      西赛德李
      2018-08-28回复箩灬卟

      你说的有道理,不过一般类似这种需求我会在 onShow 里完成。

      我觉得切换 tab 时,onShow 和 onTabItemTap 会先后执行,造成了冗余,所以才提了这个问题。

      2018-08-28
      赞同
      回复
    • 西赛德李
      西赛德李
      2018-08-28

      这样的话请修改开发者工具的逻辑,目前开发者工具中,是符合我的预期的——即“从其他 tabbar 页面切换到某一 tabbar 页面时,不执行该页面中定义的 onTabItemTap 函数”

      2018-08-28
      赞同
      回复
    • 箩灬卟
      箩灬卟
      2018-08-28回复西赛德李

      onShow与onHide,正常的页面跳转也会触发,还要自己加下各种环境下的判断。既然有tap的事件、为什么只能当前页面的tap才能触发。一般人不会已经在当前页面了还点当前页面的tap吧

      2018-08-28
      赞同
      回复
    • 西赛德李
      西赛德李
      2018-08-28回复箩灬卟

      我做的就是“在当前页面还点当前页面的 tab”,达到的效果就是点了之后回到顶部刷新,和微博 APP 的交互一样

      2018-08-28
      赞同 11
      回复
    查看更多(3)
  • 小易
    小易
    2018-08-29



    这个的逻辑就是有问题,文档写的是 当前是 tab 页时,点击 tab 时触发,为啥非当前 tab 页点击也触发,还是说任意一个 tab 页点击都会触发,这里的问题就变成“不是 tab 页 不可能点击到 tab”

    2018-08-29
    赞同
    回复 3
    • 西赛德李
      西赛德李
      2018-08-29

      对啊,首先我觉得就应该仅在当前 tab 页点击才能触发,再者就算微信设计成任意一个 tab 页点击都会触发,那也应该统一开发工具和手机客户端的表现,现在这两个地方的逻辑不一样就很尴尬

      2018-08-29
      赞同 11
      回复
    • 春野
      春野
      2018-08-29回复西赛德李

      任意一个 tab 页点击都触发,直接用 onShow 就行了,没必要用这个东西啊

      2018-08-29
      赞同
      回复
    • 调理大师张半仙
      调理大师张半仙
      2018-09-17回复春野

      你在onshow中调用扫一扫的功能试试

      2018-09-17
      赞同
      回复