s e o p p o r t . l o g

Today I Learned

[Next.js] 서버컴포넌트 VS 클라이언트 컴포넌트

Seo Ji Won 2024. 3. 11. 20:01

 

기본적으로 app하위의 모든 컴포넌트는 서버 컴포넌트이다. (초기 상태가 SSG)

서버 컴포넌트

노드에서 동작하는 컴포넌트

서버 컴포넌트에서 console.log()를 찍으면?

=> 노드가 구동되고 있는 터미널에 로그가 찍힘

 

클라이언트컴포넌트

클라이언트에서 동작하는 컴포넌트

클라이언트 컴포넌트에서 console.log()를 찍으면?

=> 브라우저 콘솔에 로그가 찍힘

 

"use client"로 클라이언트 컴포넌트로 변경할 수 있다.

 

어떻게 구분해서 사용해야할까?

사용자와의 상호작용이 있는 컴포넌트는 클라이언트 컴포넌트이다.

예시

fetch로 데이터 가져오기 = 서버 컴포넌트

백엔드의 리소스에 직접적으로 접근하기 = 서버 컴포넌트

Access Token 등 민감한 정보를 지켜야 할때 = 서버 컴포넌트

 

onClick, onChange 등 이벤트 함수가 필요한 컴포넌트 = 클라이언트 컴포넌트

React의 Hook이 사용되는 컴포넌트 = 클라이언트 컴포넌트

alert 등 브라우저-only API = 클라이언트 컴포넌트