Типичные различия между маршрутизаторами и ссылками в NextJS

#reactjs #react-router #next.js #next-router #react-link

#reactjs #react-маршрутизатор #next.js #следующий маршрутизатор #реагировать-ссылка

Вопрос:

Я новичок в 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  

Ответ №1:

в чем разница, если я вызываю страницу с обычным тегом «a» или использую ссылку / маршрутизатор для достижения того же?

Основное различие между обычным <a> тегом и next/link or next/router заключается в том, что последние два используются для переходов на стороне клиента. Таким образом, обычный <a> тег загрузит / перейдет на страницу с HTTP-запросом, в то время как маршрутизатор и ссылка с загрузкой страницы на стороне клиента.

Вы можете использовать next/router (внутри функции в вашем компоненте), когда next/link этого недостаточно, например, если вам нужно выполнить некоторые операции перед визуализацией нового компонента.

Таким образом, и маршрутизатор, и ссылка имеют схожее поведение, вы можете выбрать, в зависимости от того, что нужно делать вашему приложению, какой из них использовать.

Оба будут запускать методы выборки данных ( getServerSideProps , getStaticProps и getInitialProps )

Ответ №2:

Ссылка — это просто абстракция для маршрутизатора, использовать Link компонент намного проще, чем каждый раз создавать ссылку вручную.