当前位置:   article > 正文

解决Uni-app自定义底部tabber,切换tabbar时,点击两次tabbar才会显示正确,但页面可以正常切换的问题_uni-app 自定义tabbar需要点击两次才能切换图标

uni-app 自定义tabbar需要点击两次才能切换图标

图为底部tabbar

问题说明:点击tabbar时,例如点击【日程】,第一次点击时页面成功切换,但选中的样式(图中样式在【我的】)并未切换到【日程】,第二次点击时样式成功切换。注:我使用的vue3.

代码及对应点击tabbar方法:

  1. <view class="tab-item" v-for="(item, index) in tabs" :key="index" @click="switchTab(index)"
  2. :class="{ 'active': currentTab === index }">
  3. <!-- 图标和文本根据实际需要进行替换 -->
  4. <!-- <text class="tab-icon">{{ item.icon }}</text> -->
  5. <text class="tab-text" :class="{ 'active': currentTab === index }">{{ item.text }}</text>
  6. </view>
  1. switchTab(index) {
  2. const tab = this.tabs[index]
  3. this.currentTab = index
  4. if (tab) {
  5. uni.switchTab({
  6. url: tab.pagePath
  7. })
  8. }
  9. },

问题原因:uni.switchTab的不明原因,注释掉这个方法tabbar可以正常切换。

解决方法:参考使用vuex的方法,将原本放在组件data中的currentTab存入vuex,在切换tabbar时调用vuex中的tabIndex,确认方法可行。

步骤一:在vuex中设置tabIndex(store/index.js)

  1. import { createStore } from 'vuex'
  2. const store = createStore({
  3. state:{//存放状态
  4. "tabIndex":0
  5. }
  6. })
  7. export default store

步骤二:在组件中调用state(这里如果在js文件中使用this.$store.state.属性名,则不需要import引入store)

引入

import store from '@/store/index.js'; //需要引入store

新增方法

  1. setTabIndex(tabIndex) {
  2. console.log(store.state.tabIndex)
  3. store.state.tabIndex = tabIndex
  4. }

在uni.switchTab中,跳转页面成功时调用

  1. switchTab(index) {
  2. const tab = this.tabs[index]
  3. store.state.tabIndex = index
  4. this.currentTab = index
  5. if (tab) {
  6. uni.switchTab({
  7. url: tab.pagePath,
  8. success: () => {
  9. this.setTabIndex(index)
  10. }
  11. })
  12. }
  13. },

步骤三:删除原本data中的currentTab,使用计算属性将tabIndex给到currentTab

  1. computed: {
  2. currentTab() {
  3. return store.state.tabIndex
  4. }
  5. },

此时html无需改变:

  1. <view class="tab-item" v-for="(item, index) in tabs" :key="index" @click="switchTab(index)"
  2. :class="{ 'active': currentTab === index }">
  3. <!-- 图标和文本根据实际需要进行替换 -->
  4. <!-- <text class="tab-icon">{{ item.icon }}</text> -->
  5. <text class="tab-text" :class="{ 'active': currentTab === index }">{{ item.text }}</text>
  6. </view>

参考文章:uview 2.x版本 tabbar在uniapp小程序里头点击两次才能选中图标_uni-app h5会出现点击tabbar,页面切换但是图标没有切换完成的问题,需要二次点击才-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/wltsysterm/article/details/126069020

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

闽ICP备14008679号