/not-found.tsx은 일치하지 않는 전역 URL을 처리한다.
404 에러가 나는 페이지를 내 입맛에 맞게 바꿔줄 수가 있다.
usePathname은 현재 URL의 pathname을 읽을 수 있게 해주는 클라이언트 컴포넌트 훅.
const path = usePathname()을 사용하려고 하니 아래와 같은 오류가 생겼다.
서버 컴포넌트에서 React 클라이언트 훅을 사용하고 있을 때 발생하는 오류로 'use client' 를 추가해 클라이언트 컴포넌트로 바꿔줘야 함
NextJS가 리액트 컴포넌트를 브라우저가 이해할 수 있는 html로 변환하는 작업
/about-s -------> <button>0</button> ------> :) ---------> <button onClick ~>
클라이언트 컴포넌트를 사용하려면 파일 상단, import 위에 React "use client" 지시어를 추가하면 됨
"use client"은 서버와 클라이언트 컴포넌트 모듈 간의 경계를 선언하는 데 사용
즉, 파일에 "use client"을 정의하면 하위 컴포넌트를 포함하여 해당 파일로 가져온 다른 모든 모듈이 클라이언트 번들의 일부로 간주됨.
클라이언트에서 하이드레이션되는 컴포넌트는/클라이언트에서 인터렉티브하게 만들어질 컴포넌트는
상단에 "use client"가 있는 컴포넌트들이다.
상단에 "use client"가 있는 컴포넌트는 클라이언트에서 인터렉티브해야함(이 컴포넌트는 하이드레이션되어야해야함)
nextjs가 좋은 점이 "use client"를 안써도 프레임워크라서 알아서 알려줌(너 useState 쓰고 있으니 인터렉티브한거니까 써줘야돼 라고.. 쏘 친절)
백엔드에서 렌더되고 프론트엔드에서 하이드레이션 및 인터렉티브 됨
use hydrate 였다면 더 좋았을텐데... 이름만 어려운
use client 컴포넌트를 사용하지 않는 모든 것들은 서버 컴포넌트가 됨
'use client'를 사용하지 않는 다는건 인터렉티브한 것을 사용하지 않는다는 것이기 때문에 하이드레이션 할 필요가 없고, 그렇게 되면 자바스크립트의 양이 줄어들고 속도가 빨라짐
https://nextjs.org/docs/app/api-reference/file-conventions/not-found
https://nextjs.org/docs/app/api-reference/functions/use-pathname
https://nextjs.org/docs/messages/react-client-hook-in-server-component
ohoh 회사에서 들었던 단어들이 새록새록 기억이 날듯말듯...
근데 역시 다시 공부하니 새롭다.
열심히 정리를 했으니 앞으론 정리한걸 토대로 개념을 잊지 말아야겠다..
리액트보단 확실히 프레임워크가 좋은거 같다. 만세