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

Nuxt3中NuxtLink父链接在子路由下不激活router-link-active类问题

问题描述
  1. 使用NuxtLink时,当前路径为/course/123时,指向/course的链接不会被添加router-link-active类。

我的pages目录结构如下:

- pages
  - index.vue
  - course/
    - index.vue
    - [id].vue

app.vue代码如下:

<template>
  <div>
    <NuxtLink to="/" class="link">Home</NuxtLink>
    <NuxtLink to="/course" class="link">Course</NuxtLink>
    <NuxtLink to="/course/123" class="link" exact>Course 123</NuxtLink>
    <NuxtPage />
  </div>
</template>

<style>
.link {
  margin: 8px;
  padding: 12px;
}
.link.router-link-active {
  border: 1px solid red;
}
</style>
  1. 尝试通过监听route.path手动控制激活状态,但点击链接时状态不会立即更新,需点击两次才变化。

对应的代码:

<script setup>
const route = useRoute();
const activeRoute = ref(route.path);

watch(
  () => route.path,
  (route) => { activeRoute.value = route })

const activePath = (path: string) => {
  return activeRoute.value.includes(path);
}
</script>

<template>
    <NuxtLink to="/" class="link">Home</NuxtLink>
      <NuxtLink
        to="/course"
        :class="{ 'router-link-active': activePath('/course') }"
        class="link"
        >Course</NuxtLink
      >
      <NuxtLink to="/course/123" class="link" exact>Course 123</NuxtLink>
</template>
解决方案

核心是调整pages目录结构,并新增一个路由容器文件:

原目录结构:

- pages
  - index.vue
  - course/
    - index.vue
    - [id].vue

调整后目录结构:

- pages
  - index.vue
  - course/
    - index.vue
    - [id].vue
  - course.vue

新增的course.vue内容仅作为路由容器:

<template>
    <NuxtPage />
</template>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 10:25:22