reactjs - NextJS 中路由器和链接的典型区别

标签 reactjs react-router next.js next-router react-link

我是 NextJS 的新手。我想知道 next/router 和 next/link 之间的典型变化和用例。

在各种情况下我应该使用哪一个?哪个做什么?例如,如果我想加载共享组件或在服务器端呈现的页面之间导航。另外,如果我使用普通的“a”标签调用页面或使用链接/路由器来实现相同的效果,有什么区别。

import { useRouter } from 'next/router'

function ActiveLink({ children, href }) {
  const router = useRouter()
  const style = {
    marginRight: 10,
    color: router.pathname === href ? 'red' : 'black',
  }

  const handleClick = (e) => {
    e.preventDefault()
    router.push(href)
  }

  return (
    <a href={href} onClick={handleClick} style={style}>
      {children}
    </a>
  )
}

export default ActiveLink

import Link from 'next/link'

function Home() {
  return (
    <ul>
      <li>
        <Link href="/">
          <a>Home</a>
        </Link>
      </li>
      <li>
        <Link href="/about">
          <a>About Us</a>
        </Link>
      </li>
    </ul>
  )
}

export default Home

最佳答案

如果我调用带有普通“a”标签的页面或使用链接/路由器来实现相同目的,有什么区别?

正常<a>之间的主要区别标记和 next/linknext/router是后两者用于client-side transitions .所以一个正常的 <a>标记将使用 http 请求加载/导航到页面,而路由器和链接将加载页面客户端。

您可以使用 next/router (在组件的函数内)当 next/link 时还不够,例如,如果您需要在渲染新组件之前执行一些操作。

因此路由器和链接都有相似的行为,您可以根据您的应用需要做什么来选择使用哪一个。

两者都将运行数据获取方法(getServerSidePropsgetStaticPropsgetInitialProps)

关于reactjs - NextJS 中路由器和链接的典型区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63771990/

相关文章:

javascript - 在不转换 `height` 属性的情况下折叠展开动画?

javascript - “历史”、无限制全局变量和 window.history

reactjs - 如何在 React 中将数据传递到 <redirect> 中的页面?

javascript - 如何在不重新加载页面的情况下将服务器端重定向到其他页面并且仍然将 URL 保留在 Nextjs 应用程序中?

html - 为什么我的图标在我的下一个 js 应用程序中不起作用?

javascript - 任意泛型的 typescript map

reactjs - React Native 评估 this.state 中的表达式

javascript - 如何用 React.js 添加一个类?

javascript - 通过数组 React Router 映射

reactjs - 使用 Link 模块的 Next.js 页面未通过 CSS 导入加载文件