当前位置:   article > 正文

uview 2.x版本 tabbar在uniapp小程序里头点击两次才能选中图标_uni-app h5会出现点击tabbar,页面切换但是图标没有切换完成的问题,需要二次点击才

uni-app h5会出现点击tabbar,页面切换但是图标没有切换完成的问题,需要二次点击才

最近将uview2.x应用到基于uniapp开发的小程序里头,作者发现,确实好用。但是很快就发现了,使用了其中的tabbar组件,出现如题的问题。

出问题的代码如下:

  1. <template>
  2. <view>
  3. <u-tabbar
  4. :value="value6"
  5. @change="changeTab"
  6. activeColor="#00cc33"
  7. :fixed="true"
  8. :placeholder="true"
  9. :safeAreaInsetBottom="true"
  10. >
  11. <u-tabbar-item text="首页" :icon="value6==0?'home-fill':'home'" ></u-tabbar-item>
  12. <u-tabbar-item text="我的" :icon="value6==1?'account-fill':'account'" ></u-tabbar-item>
  13. </u-tabbar>
  14. </view>
  15. </template>
  16. <script>
  17. export default {
  18. data() {
  19. return {
  20. value6:0,
  21. list: [
  22. {path: "/pages/index/index"},
  23. {path: "/pages/user/user"},
  24. ]
  25. }
  26. },
  27. methods: {
  28. changeTab(e) {
  29. uni.switchTab({
  30. url: this.list[e].path,
  31. success:()=>{
  32. this.value6 = e
  33. }
  34. })
  35. }
  36. }
  37. }
  38. </script>

效果如下:

问题:点击我的,页面成功切换到了我的,但是图标没被选中(第一次会选中我的,然后闪变会首页,只是图标闪变,页面保持)。

找了一圈,没找到答案,但是我分析了下,可能是uni.switchTab导致当前的组件发生某种不可描述的问题吧。所以我注释掉uni.switchTab的代码,确实恢复正常了。

有了上面的结论,我觉得只要定义一个全局的变量来记录当前的图标位置,脱离当前组件的控制,问题应该就解决了,所以我在vuex里头定义了一个变量tabIndex,每次切换修改这个变量。果然,就成功的解决了如题的问题,修改后的代码如下:

  1. <template>
  2. <view>
  3. <u-tabbar
  4. :value="tabIndex"
  5. @change="changeTab"
  6. activeColor="#00cc33"
  7. :fixed="true"
  8. :placeholder="true"
  9. :safeAreaInsetBottom="true"
  10. >
  11. <u-tabbar-item text="首页" :icon="tabIndex==0?'home-fill':'home'" ></u-tabbar-item>
  12. <u-tabbar-item text="我的" :icon="tabIndex==1?'account-fill':'account'" ></u-tabbar-item>
  13. </u-tabbar>
  14. </view>
  15. </template>
  16. <script>
  17. import {
  18. mapState
  19. } from 'vuex';
  20. export default {
  21. data() {
  22. return {
  23. interval:null,
  24. list: [
  25. {path: "/pages/index/index"},
  26. {path: "/pages/user/user"},
  27. ]
  28. }
  29. },
  30. computed: mapState({
  31. tabIndex:'tabIndex'
  32. }),
  33. methods: {
  34. changeTab(e) {
  35. uni.switchTab({
  36. url: this.list[e].path,
  37. success:()=>{
  38. this.setTabIndex(e)
  39. s }
  40. })
  41. },
  42. setTabIndex(tabIndex){
  43. this.$store.state.tabIndex = tabIndex
  44. }
  45. }
  46. }
  47. </script>
  48. <style>
  49. </style>

 

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