- 当前 Bug 的表现(可附上截图)
我想做一个当用户在首页点击底部首页的 tabbar(第一个)时,页面刷新的功能,于是在首页的 js 文件中写了 onTabItemTap 事件,且其他的 tabbar 页面没有写 onTabItemTap 事件。
在首页中点击首页的 tabbar(第一个)时,的确会执行 onTabItemTap 函数。但是在其他未设置 onTabItemTap 的 tabbar 页面中,点击首页的 tabbar(第一个)时,会跳转到首页并且也执行首页 js 中的 onTabItemTap 函数。
目前在 Android 和 iOS 端都出现这个问题,在开发工具中没有出现。
- 预期表现
从其他 tabbar 页面切换到某一 tabbar 页面时,不执行该页面中定义的 onTabItemTap 函数。
如果点击任意一个 tabBar 都会触发 onTabItemTap,那么我为什么要用这个东西,直接用 onShow 不就行了么!
这个的逻辑就是有问题,文档写的是 当前是 tab 页时,点击 tab 时触发,为啥非当前 tab 页点击也触发,还是说任意一个 tab 页点击都会触发,这里的问题就变成“不是 tab 页 不可能点击到 tab”
对啊,首先我觉得就应该仅在当前 tab 页点击才能触发,再者就算微信设计成任意一个 tab 页点击都会触发,那也应该统一开发工具和手机客户端的表现,现在这两个地方的逻辑不一样就很尴尬
任意一个 tab 页点击都触发,直接用 onShow 就行了,没必要用这个东西啊
你在onshow中调用扫一扫的功能试试
从其他 tabbar 页面切换到某一 tabbar 页面时,不执行该页面中定义的 onTabItemTap 函数。
你好,这个逻辑不符合预期,你如果不想执行里面的逻辑,可以通过一些变量来控制!
我们需要监听tap切换后处理当前tap页面的事件。比如当前页面有一个弹层,但是小程序的自定义弹层遮不住tap,所以能被tap切换页面。我们需要知道用户点击了其它tap,然后关闭前一tap的弹层
你说的有道理,不过一般类似这种需求我会在 onShow 里完成。
我觉得切换 tab 时,onShow 和 onTabItemTap 会先后执行,造成了冗余,所以才提了这个问题。
这样的话请修改开发者工具的逻辑,目前开发者工具中,是符合我的预期的——即“从其他 tabbar 页面切换到某一 tabbar 页面时,不执行该页面中定义的 onTabItemTap 函数”
onShow与onHide,正常的页面跳转也会触发,还要自己加下各种环境下的判断。既然有tap的事件、为什么只能当前页面的tap才能触发。一般人不会已经在当前页面了还点当前页面的tap吧
我做的就是“在当前页面还点当前页面的 tab”,达到的效果就是点了之后回到顶部刷新,和微博 APP 的交互一样