You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel+Vue3+Inertia+Ziggy路由激活active类无法移除求助

解决Inertia Link组件Active类无法移除的问题

核心原因

你遇到的Dashboard链接active类一直存在的问题,基本是因为路由匹配逻辑有误——比如用了路径包含式的判断(比如url.includes('/')),而Dashboard的路径通常是根路径/,其他所有路由的路径都包含/,导致判断永远为真。

正确的两种写法

1. 用Ziggy的current()精准匹配路由名

直接通过Ziggy的方法严格匹配路由名称,只有当前路由名完全一致时才添加active类:

<Link 
  :href="route('dashboard')"
  :class="{ 'active': route().current('dashboard') }"
>
  Dashboard
</Link>

current()方法会严格校验当前路由的命名,切换到其他路由时自动返回false,active类会被正常移除。

2. 直接对比Inertia页面的路由名

Inertia会把当前路由的名称注入到页面props里,直接对比即可:

<Link 
  :href="route('dashboard')"
  :class="{ 'active': $page.props.route.name === 'dashboard' }"
>
  Dashboard
</Link>

这种方式完全绕开路径匹配的歧义,是最稳妥的写法。

排查你的错误写法

检查你之前的代码,如果你用了以下几种错误逻辑,就会导致问题:

  • 用$page.url.includes(route('dashboard')):根路径/会被所有路由的URL包含,所以永远返回true
  • 错误使用通配符:比如route().is('dashboard*'),如果你的Dashboard没有子路由,这种写法可能引发误匹配
  • 路由命名不匹配:确认Laravel路由文件里,Dashboard的路由确实命名为dashboard,比如:
Route::get('/', fn () => Inertia::render('Dashboard'))->name('dashboard');

内容的提问来源于stack exchange,提问作者Hardist

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 14:12:41