❗️ Next.js에서는 특별한 조취를 취하지 않으면 Server Component로 간주한다.
✅ Server Component
- secure date
- cookie geader
- ‼️fetch
✅ Client Component
- useState
- useEffect
- onClick
- onChange
- useRouter
- useParams
- ‼️fetch
사용자와 상호작용이 있나?
⭕️=> Client Component
❌=> Server Component
-단순 정보제공
next.js에서는 기본적으로 Server Component로 간주한다.
그리고 Server Component는 useState를 사용할 수 없어서 오류가 난다.

이를 해결하기위해서는 import하는 영역에
"use client" 를 기입해준다.
‼️참고
const meta에 의한 오류
const meta는 server Component에서 사용하는데
"use client"로 인해 client로 변환되어 오류가 난다
🛑 변경전

🛑변경 후

서버와 통신하는 useEfeect를 비롯한 코드들은 JS에서는 실행되지 않는다.
따라서 JS가 실행되지않는 환경에서는 해당 코드는 실행되지 않는다.
db를 통한 데이터 연결에서의 ID/PW사용시 정보가 노출될 수 있는 보안 이슈가 있다.
❗️해결
"useClient"를 삭제하여 Server Client"로 만들어준다.
이러면 Server Client에서 사용할 수 없는 useState, useEffect로 인해 오류가 난다.
이렇게 된다면 기존 Server Component에서는 사용자의 환경에서의 JS에 의해 통신을 한 정보를
서버에서 DB와 통신하고 이러한 정보를 컴파일 하여 사용자에게 보여준다.
❗️장점
1. JS를 전송하지 않으므로 용량이 줄어든다.
2. 접근하는 서버가 같은 서버 혹은 가까운 서버라면 빠른속도로 응답해준다.
3. 서버에서 생성한 DB정보를 사용자에게 보여주기떄문에 JS가 없는 환경에서도 보여준다.
상세 페이지에서도 동일하게
비동기 방식(await)으로 fetch를 db와 연결해주고
이를 json으로 변경하여 본문에 적용해준다.

