Nuxt3 路由器 - $route 未定义
Nuxt3 Router - $route is not defined
我建立了一个新的 Nuxt3 项目,但在使用 NuxtLink 组件导航到动态路由页面时遇到问题。
<template>
<div>
<div v-for="project in projects.projects">
<NuxtLink :to="{ path: `/projects/${project.id}` }">{{project.text}}</NuxtLink>
</div>
<button @click="projects.addProject('Test Project', 'Director')">Add Project</button>
</div>
</template>
<script>
import { useProjectsStore } from '@/store/projects.js'
export default {
setup() {
const projects = useProjectsStore()
return { projects }
},
}
</script>
在这段代码中,当我点击添加项目时,它创建了一个 NuxtLink 组件。当我单击 link 时,window 中的 URL 按预期更改为 /projects/0,但我在控制台中收到此错误并且页面内容未更新。
Uncaught (in promise) ReferenceError: $route is not defined at [id].vue:14:72
但是当我刷新页面时,直接转到 /projects/0
位置,加载正常,没有 $route is not defined 错误。
但是奇怪的是,如果我添加一个 NuxtLink 组件去 /projects/0
然后点击那个 link,而不是使用添加项目按钮创建 NuxtLink 组件,路由工作正常,没有错误。
这是[id].vue
文件内容:
<template>
<div>
<h2>Single project</h2>
<h1>{{project}}</h1>
</div>
</template>
<script>
import { useProjectsStore } from '@/store/projects.js'
export default {
setup() {
const projects = useProjectsStore()
const project = projects.projects.find((project) => project.id === $route.params.id)
console.log(project);
return { project }
},
}
</script>
您应该使用可组合函数 useRoute
在设置挂钩中获取路由实例:
export default {
setup() {
const projects = useProjectsStore()
const route=useRoute()
const project = projects.projects.find((project) => project.id === route.params.id)
console.log(project);
return { project }
},
}
我建立了一个新的 Nuxt3 项目,但在使用 NuxtLink 组件导航到动态路由页面时遇到问题。
<template>
<div>
<div v-for="project in projects.projects">
<NuxtLink :to="{ path: `/projects/${project.id}` }">{{project.text}}</NuxtLink>
</div>
<button @click="projects.addProject('Test Project', 'Director')">Add Project</button>
</div>
</template>
<script>
import { useProjectsStore } from '@/store/projects.js'
export default {
setup() {
const projects = useProjectsStore()
return { projects }
},
}
</script>
在这段代码中,当我点击添加项目时,它创建了一个 NuxtLink 组件。当我单击 link 时,window 中的 URL 按预期更改为 /projects/0,但我在控制台中收到此错误并且页面内容未更新。
Uncaught (in promise) ReferenceError: $route is not defined at [id].vue:14:72
但是当我刷新页面时,直接转到 /projects/0
位置,加载正常,没有 $route is not defined 错误。
但是奇怪的是,如果我添加一个 NuxtLink 组件去 /projects/0
然后点击那个 link,而不是使用添加项目按钮创建 NuxtLink 组件,路由工作正常,没有错误。
这是[id].vue
文件内容:
<template>
<div>
<h2>Single project</h2>
<h1>{{project}}</h1>
</div>
</template>
<script>
import { useProjectsStore } from '@/store/projects.js'
export default {
setup() {
const projects = useProjectsStore()
const project = projects.projects.find((project) => project.id === $route.params.id)
console.log(project);
return { project }
},
}
</script>
您应该使用可组合函数 useRoute
在设置挂钩中获取路由实例:
export default {
setup() {
const projects = useProjectsStore()
const route=useRoute()
const project = projects.projects.find((project) => project.id === route.params.id)
console.log(project);
return { project }
},
}