vant tabbar解决路径问题(根据路径显示高亮tabbar)

💂 个人网站: 【紫陌】【笔记分享网】
💅 想寻找共同学习交流、共同成长的伙伴, 请点击【前端学习交流群】

前言:今天在做项目的时候引入了vant中的tabbar组件,遇到到 url路径匹配tabbar高亮问题

首先演示问题:

解决方案

vant文档也没有给我解决这个问题的api,只能自己手动解决了。

这种tabbar功能一般都是用一个变量去控制高亮的。当然vant给我提供了v-model选中标签返回索引

  1. 理解我的代码

我这里用的是 vue3+vant4,上面这个代码是没有解决问题的。

根据代码看出根据path匹配显示高亮tabbar的问题,问题就是路径变化currentIndex匹配不到对应的 index

解决办法:用watch监测路由的路径变化然后给currentIndex匹配正确index

tabbar数据信息是后端返回来的,格式如下(数组包裹对象)

上代码:

// 监听路由改变时, 找到对应的索引, 设置currentIndex
const currentIndex = ref(0);
const route = useRoute();
watch(route ,()=>{
  const index = tabbarData.findIndex(item => item.path === route.path)
  if(index === -1) return 
  currentIndex.value = index   
})

这个解决方案并不是合格每个人的,要根据自己的业务灵活应用吧,我这里给大家提供一种思维方式。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Vant Tabbar 是一个基于 Vant UI 框架的选项卡组件,用于在移动端创建底部导航栏。它允许你在页面底部放置多个标签按钮,并且可以通过切换标签来切换页面内容。使用 Vant Tabbar 可以方便地实现类似微信底部导航栏的效果。 你可以通过以下步骤来使用 Vant Tabbar: 1. 安装 Vant UI:首先确保你的项目已经安装了 Vant UI,可以通过 npm 或 yarn 进行安装。 ```shell npm install vant ``` 2. 导入 Tabbar 组件:在需要使用 Tabbar 的页面中,导入 Tabbar 组件并注册。 ```javascript import { Tabbar, TabbarItem } from 'vant'; export default { components: { [Tabbar.name]: Tabbar, [TabbarItem.name]: TabbarItem, }, }; ``` 3. 使用 Tabbar 组件:在模板中使用 Tabbar 组件,并设置相应的属性和事件。 ```html <template> <div> <tabbar v-model="activeTab"> <tabbar-item icon="home-o" to="/home">首页</tabbar-item> <tabbar-item icon="search" to="/search">搜索</tabbar-item> <tabbar-item icon="shopping-cart-o" to="/cart">购物车</tabbar-item> <tabbar-item icon="user-o" to="/profile">我的</tabbar-item> </tabbar> </div> </template> ``` 在上面的示例中,`v-model` 绑定了当前选中的标签按钮的索引,`to` 属性指定了每个标签按钮对应的路由路径。 4. 处理 Tabbar 切换事件:通过监听 `activeTab` 的变化,可以在页面中处理标签切换的逻辑。 ```javascript export default { data() { return { activeTab: 0, }; }, watch: { activeTab(index) { // 处理标签切换逻辑 }, }, }; ``` 通过以上步骤,你就可以在你的移动端应用中使用 Vant Tabbar 组件来创建底部导航栏了。希望这能帮到你!如果还有其他问题,请随时提问。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值