nextjs
路由预取
在 Next.js 中,<Link>
组件和 useRouter 钩子(useRouter hook)都可以用于预取(Prefetching)路由,但它们有一些区别。
<Link>
组件预取:<Link>
组件是 Next.js 提供的路由导航组件,用于创建页面之间的链接。- 当使用
<Link>
组件时,Next.js 会自动在用户视口中可见的时候预取相应的路由。这意味着当用户将鼠标悬停在<Link>
组件上或<Link>
组件进入浏览器视口时,相关的路由资源将被提前加载。 - 预取发生在页面首次加载时或通过滚动进入视图时。
- useRouter 钩子预取:
- useRouter 钩子是 Next.js 提供的一个 React 钩子,用于在组件内部获取当前路由信息。
- 可以使用 useRouter 钩子以编程方式预取路由。通过调用 router.prefetch()方法,并传入对应的路由路径,可以在后台预先加载该路由所需的资源。
- 这种编程方式的预取允许在组件逻辑中根据需要进行预取,而不局限于
<Link>
组件可见性的触发。
总结:
<Link>
组件预取是自动的,基于用户视 口的可见性触发。- useRouter 钩子预取是编程方式的,可以在组件内根据需要触发。
根据具体情况选择适合的预取方式。如果需要在用户交互时预取路由,可以使用<Link>
组件。如果需要在组件逻辑中手动预取路由,可以使用 useRouter 钩子。