일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- react
- 코딩테스트 고득점 Kit 완전탐색
- Java
- 데이터모델링과마이닝
- 백준
- 리액트 훅
- 프로그래머스 자바
- 디자인 패턴
- 자바
- react firebase
- react hook
- design pattern
- 장고
- React JS
- websocket
- codesandbox
- NextJS
- 자바스크립트
- 컴퓨터 네트워크
- 프로그래머스
- 프로그래머스 완전탐색
- useEffect
- 프로그래밍 언어론
- JavaScript
- 리액트
- vanillaJS
- 코틀린
- 코딩테스트 고득점 Kit
- 자바 공부
- useState
- Today
- Total
기록하는 개발자
[NextJs] Routing과 navigation 본문
Page 기반 Routing
React 로 처음 개발을 할 때 보통 component 작성 후 router를 만들고 시작한다.
nextjs를 처음 배웠을 때 제일 놀라고 편했던 것 router를 작성하지 않아도 된다는 것이다..
nextJs의 기본 폴더 구조이다.
pages안에 index.js가 "/" 의 위치이다.
npm run dev를 하고 3000 port에서 서버가 열리면 "http://localhost:3000/"에서 index.js를 볼 수 있다.
page 폴더 아래 여러 폴더 및 파일을 생성해보았다.
index.js(tsx)와 동일한 경로에 있는 genre.tsx는 "/genre"
즉, "http://localhost:3000/genre" 로 이동 시 표시되는 컴포넌트 이다.
client-side navigation
navigation 또한 react에서 사용했던 useNavigation이 아니라 Link 태그만 작성해주면 된다.
so easy.....
a 태그로도 작성할 수 있지만 페이지 이동 시 새로고침(화면 깜빡임)이 발생한다.
next에서 지원하는 Link 태그를 이용하면 새로고침 없이 페이지 이동이 가능하다.
// Import 필수
import Link from "next/link";
export default function Home() {
return (
<div>
<Link href={{pathname: "/genre"}}></Link>
</div>
);
}
Link
- 페이지간의 탐색을 CSR으로 진행 할 수 있다.
- 라우팅 라이브러리가 필요하지 않습니다.
- 특정 페이지에서 오류가 발생하더라도 나머지 앱은 정상 작동 합니다.
- Code Splitting이 페이지 별로 진행 되어 각 페이지에서 필요한 것만 로드할 수 있도록 한다.
Code Splitting
프로그램에서 오직 그 페이지를 실행하는데 꼭 필요한 코드만 가져오도록 초기 로딩 시간을 향상시키는 것이다.
Next.js는 코드 분할을 자체적으로 지원한다.
pages 폴더 안에 각 파일이 빌드하는 동안 자체 자바스크립트 번들로 자동 코드 분할한다.
Link의 Query 전달
// Import 필수
import Link from "next/link";
export default function Home() {
return (
<div>
<Link
href={{
pathname: `/movies/${id}`,
query: {
id: id,
title: title,
content: content,
},
}}
></Link>
</div>
);
}
404
NextJs는 404 페이지도 page 폴더 내에 "404" 파일만 만들면
컴포넌트가 존재하지 않는 url로 이동했을 때 자동으로 404 page를 띄워준다.
신기하고도 편리한 NextJs의 세계,,
'Web > NextJs' 카테고리의 다른 글
[NextJs] NextJs에 TailwindCss 적용 하기 (1) | 2023.05.11 |
---|---|
[NextJs] NextJs에 Swiper 적용하기 (1) | 2023.05.11 |
[NextJs] getStaticProps와 getServerSideProps (0) | 2023.05.09 |
[NextJs] next.config.js 의 redirects와 rewrites (0) | 2023.05.09 |
[NextJs] NextJs+Typescript로 프로젝트 시작하기 (0) | 2023.05.08 |