Skip to main content

nextjs

路由预取

在 Next.js 中,<Link>组件和 useRouter 钩子(useRouter hook)都可以用于预取(Prefetching)路由,但它们有一些区别。

  1. <Link>组件预取:
    • <Link>组件是 Next.js 提供的路由导航组件,用于创建页面之间的链接。
    • 当使用<Link>组件时,Next.js 会自动在用户视口中可见的时候预取相应的路由。这意味着当用户将鼠标悬停在<Link>组件上或<Link>组件进入浏览器视口时,相关的路由资源将被提前加载。
    • 预取发生在页面首次加载时或通过滚动进入视图时。
  2. useRouter 钩子预取:
    • useRouter 钩子是 Next.js 提供的一个 React 钩子,用于在组件内部获取当前路由信息。
    • 可以使用 useRouter 钩子以编程方式预取路由。通过调用 router.prefetch()方法,并传入对应的路由路径,可以在后台预先加载该路由所需的资源。
    • 这种编程方式的预取允许在组件逻辑中根据需要进行预取,而不局限于<Link>组件可见性的触发。

总结:

  • <Link>组件预取是自动的,基于用户视口的可见性触发。
  • useRouter 钩子预取是编程方式的,可以在组件内根据需要触发。

根据具体情况选择适合的预取方式。如果需要在用户交互时预取路由,可以使用<Link>组件。如果需要在组件逻辑中手动预取路由,可以使用 useRouter 钩子。