Next.JS가 무엇고, React와의 차이가 무엇인가?
유저가 접속을 하면 서버에서 리액트를 실행하고 리액트는 UI를 렌더링하여 브라우저에게 HTML을 제공함(pre-rendering)으로 유저에게 화면을 보여준다. 이후 브라우저는 리액트.js파일을 다운받고 이후부터는 React처럼 CSR, 동적 렌더링을 한다.
export default
해줘야 함 (아니면 오류남)React에서 Link를 사용하는 것과 마찬가지로 <a>
(anchor)태그를 사용하면 안된다.
새로고침되는 것이 아니라 앱 내에서 페이지 네비게이트를 해야하기 때문!
import Link from "next/link"
<nav>
<Link href="/">
<a>Home</a>
</Link>
<Link href="/about">
<a>About</a>
</Link>
</nav>
Link를 import 후 Link태그에 href를, 자식으로 a태그를 써주면 된다. (이 부분이 React랑 약간 다르다!)
그럼 새로고침되지 않고 빠르게 페이지 이동이 되는것처럼 보여지게 된다.
왜 a태그를 한번 더 감싸나 ?
없어도 링크 이동은 된다.
하지만 Link에 style을 주거나 class를 주는등 이런건 a태그에 줘야한다.
Link는 오로지 href를 위해 존재한다고 생각!!
Next.JS를 설치하면 React설치할때와 동일하게 설치가 되며,
import { useRouter } fromt "next/router"
를 통해 useRouter를 사용 가능하다.
const router = useRouter()
를 사용하여 router.pathname
을 알 수 있다.
<nav>
<Link href="/">
<a style={{color: router.pathname === "/" ? "red" : "#666"}}>Home</a>
</Link>
<Link href="/about">
<a style={{color: router.pathname === "/about" ? "red" : "#666"}}>About</a>
</Link>
</nav>
현재 path를 받아와 비교하여 style을 줄 수 있다.
간단한 포트폴리오 사이트 작업이다보니 컴포넌트화, Nav 정도 알고나면 진행가능 할 것 같다는 생각이 들어서 작업하면서 모르는건 그때그때 정리해 나가야 겠다 :)
공부하며 정리&기록하는 ._. 씅로그
Next.js 13 저도 이제 막 시작한 병아리입니다! 함께 성장하게 되어서 너무 기쁩니다!