当前位置:   article > 正文

[微信小程序]自定义Tabbar的使用以及闪回问题解决_微信小程序 自定义tabbar点击跳转时会回退

微信小程序 自定义tabbar点击跳转时会回退

问题描述:

在使用微信小程序自定义Tabbar的时候,使用wx.switchTab(url)方法进行跳转时,路径跳转成功,但是Tabbar图标出现闪回(切换到了正确图标的瞬间闪回到了上一个图标)


 

问题详情:

①初始状态如下

 ②点击分类按钮时,路径成功进行了跳转,而图标栏瞬间跳转到分类后闪烁返回到了首页图标,渲染失败

 

 

 ③多次测试均出现问题


相关源码:

wxml:

  1. <view class="cu-bar tabbar bg-white">
  2. <view class="action text-{{selected == 0 ? 'green' : 'gray'}}" bindtap="switchTab" data-e="0">
  3. <view class="cuIcon-{{selected == 0 ? 'homefill' : 'home'}}"></view> 首页
  4. </view>
  5. <view class="action text-{{selected == 1 ? 'green' : 'gray'}}" bindtap="switchTab" data-e="1">
  6. <view class="cuIcon-{{selected == 1 ? 'circlefill' : 'circle'}}"></view> 分类
  7. </view>
  8. <view class="action text-gray add-action" bindtap="switchTab" data-e="4">
  9. <button class="cu-btn cuIcon-add bg-green shadow"></button>
  10. 发布
  11. </view>
  12. <view class="action text-{{selected == 2 ? 'green' : 'gray'}}" bindtap="switchTab" data-e="2">
  13. <view class="cuIcon-{{selected == 2 ? 'cartfill' : 'cart'}}">
  14. <view class="cu-tag badge">99</view>
  15. </view>
  16. 购物车
  17. </view>
  18. <view class="action text-{{selected == 3 ? 'green' : 'gray'}}" bindtap="switchTab" data-e="3">
  19. <view class="cuIcon-{{selected == 3 ? 'myfill' : 'my'}}">
  20. <view class="cu-tag badge"></view>
  21. </view>
  22. 我的
  23. </view>
  24. </view>

js:

  1. switchTab: function(e){
  2. const key = Number(e.currentTarget.dataset.e);
  3. var url = ['/pages/index/index','/pages/category/category','/pages/collect /collect','/pages/mine/mine']
  4. url = url[key]
  5. wx.switchTab({
  6. url: url
  7. })
  8. this.setData({
  9. selected:key
  10. })
  11. },
  12. data:{
  13. selected:0
  14. }

原因分析:

检查调试器Wxml中渲染已经执行,且渲染效果为上一次点击的Tab图标,我认为是因为Tabbar具有单独的数据域与页面Page的data数据域不共享,因此在渲染时,如果js中修改的数据是Page中的data数据域,而渲染需要的是Tabbar中的数据,因此只需要在每一个Tabbar对应的页面中Onshow方法里使用

   this.getTabBar().setData({

      selected:0

    })

解决代码:

  1. //每一个Tabbar的页面中都设置在页面显示的时候将Tabbar组件中的selected数据修改
  2. onShow(){
  3. this.getTabBar().setData({
  4. selected:0
  5. })

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/90021
推荐阅读