返回

Nuxt 3 中追踪重定向来源:通过 redirectedFrom 选项

vue.js

Nuxt 3 中使用 redirectedFrom 追踪重定向

问题:重定向后找不到重定向来源

在 Nuxt 3 中使用 navigateTo 进行重定向时,useRouteredirectedFrom 属性默认为 undefined。这使得追踪重定向来源变得困难,例如在面包屑导航中。

解决方案:添加 redirectedFrom 选项

要解决这个问题,在使用 navigateTo 进行重定向时添加 redirectedFrom 选项。

navigateTo({
  path: '/app/documents/all-documents',
  redirectedFrom: { name: 'previous-route-name' },
})

原因:需要显式定义重定向来源

如果不设置 redirectedFrom 选项,Nuxt 无法自动确定重定向来源,因此 redirectedFrom 将保持 undefined

使用方法:使用 useRoute 访问 redirectedFrom

添加 redirectedFrom 选项后,可以使用 useRoute 访问 redirectedFrom 对象。

const route = useRoute()
console.log(route.redirectedFrom.name) // previous-route-name

注意事项:仅限于 navigateTo

redirectedFrom 选项仅在使用 navigateTo 时可用,在使用其他导航方法(如 router.push)时不可用。

示例:追踪重定向来源

以下示例演示了如何在 Nuxt 3 中使用 redirectedFrom 追踪重定向来源:

<script setup>
import { useRouter } from 'nuxt/app'

const router = useRouter()

const handleClick = () => {
  router.navigateTo({
    path: '/app/documents/all-documents',
    redirectedFrom: { name: 'home' },
  })
}
</script>

<template>
  <button @click="handleClick">Navigate to All Documents</button>
</template>

结论:追踪重定向来源至关重要

通过使用 redirectedFrom 选项,你可以追踪重定向来源并使用 useRoute.redirectedFrom 访问相关信息。这对于实现面包屑导航和其他依赖于重定向来源的功能非常有用。

常见问题解答

Q1:为什么需要设置 redirectedFrom 选项?

A1:Nuxt 无法自动确定重定向来源,因此需要显式定义。

Q2:redirectedFrom 选项何时可用?

A2:redirectedFrom 选项仅在使用 navigateTo 时可用。

Q3:如果不设置 redirectedFrom 选项会怎样?

A3:redirectedFrom 将保持 undefined

Q4:如何访问 redirectedFrom 对象?

A4:可以使用 useRoute 来访问 redirectedFrom 对象。

Q5:redirectedFrom 对象中有什么信息?

A5:redirectedFrom 对象包含有关重定向来源的信息,例如名称和路径。