Skip to content
全部文档

wire:current

wire:current 指令让你可以轻松检测并为页面上当前激活的链接设置样式。

TIP

考虑改用 data-current

Livewire 会自动给匹配当前页面的所有 wire:navigate 链接加上 data-current 属性。你可以直接用 Tailwind 的 data-current: 变体或 CSS 设置样式,无需 wire:current 指令。了解自动 data-current →

下面是一个简单示例:在导航栏链接上添加 wire:current,让当前激活链接的字重更粗:

blade
<nav>
    <a href="/dashboard" ... wire:current="font-bold text-zinc-800">Dashboard</a>
    <a href="/posts" ... wire:current="font-bold text-zinc-800">Posts</a>
    <a href="/users" ... wire:current="font-bold text-zinc-800">Users</a>
</nav>

当用户访问 /posts 时,「Posts」链接的字体样式会比其他链接更突出。

需要注意:wire:current 开箱即用地支持 wire:navigate 链接与页面切换,除了指定的 class 外,还会自动给匹配的链接加上 data-current 属性。

精确匹配

默认情况下,wire:current 使用部分匹配策略:只要链接与当前页面的 URL 路径开头部分相同,就会生效。

例如,链接为 /posts、当前页为 /posts/1 时,wire:current 仍会生效。

若希望精确匹配,可为指令加上 .exact 修饰符。

下面示例用精确匹配,避免用户访问 /posts 时「Dashboard」链接被高亮:

blade
<nav>
    <a href="/" wire:current.exact="font-bold">Dashboard</a>
</nav>

严格匹配

默认情况下,wire:current 比较时会去掉末尾斜杠(/)。

若要关闭该行为并强制严格路径字符串比较,可追加 .strict 修饰符:

blade
<nav>
    <a href="/posts/" wire:current.strict="font-bold">Dashboard</a>
</nav>

排查问题

wire:current 未能正确检测当前链接,请确认:

  • 页面上至少有一个 Livewire 组件,或已在布局中硬编码 `@livewireScripts`
  • 链接上有 `href` 属性。

参考

blade
wire:current="classes"

修饰符

修饰符说明
.exact使用精确路径匹配,而非部分匹配
.strict强制严格路径比较(包含末尾斜杠)