가끔 React Fragment와 return null을 혼동해서 사용하는 경우가 있습니다. 이 둘의 차이점을 알아보겠습니다.
Fragment
Fragment는 컴포넌트를 렌더링할 때 사용하는 컴포넌트입니다. 그리고 컴포넌트를 렌더링할 때 불필요한 DOM 요소를 생성하지 않습니다. Fragment 조각은 HTML에서 어떠한 출력도 생성하지 않으며 DOM 구조에 영향을 주지 않고 요소를 함께 그룹화하는 데 사용할 수 있습니다.
function ListComponent({ items }) {
return (
<>
{items.map((item) => (
<li key={item.id}>{item.name}</li>
))}
</>
);
}
예를 들어 위와 같이 리스트 컴포넌트를 렌더링 할 때, 리스트 아이템만 렌더링하고 싶을 때가 있습니다. 이때 Fragment를 사용하면 불필요한 DOM 요소를 생성하지 않고 리스트 아이템만 렌더링할 수 있습니다.
return null
컴포넌트에서 null을 반환한다는 것은 아무것도 렌더링하지 않겠다는 뜻입니다. React는 이 컴포넌트와 그 안에 있을 수 있는 모든 자식 렌더링을 건너뜁니다. 특정 state나 props에 따라 컴포넌트를 조건부로 렌더링하고 싶을 때 유용할 수 있습니다.
function ListComponent({ items }) {
if (items.length === 0) {
return null;
}
return (
<>
{items.map((item) => (
<li key={item.id}>{item.name}</li>
))}
</>
);
}
위와 같이 리스트 컴포넌트를 렌더링 할 때, 리스트 아이템이 없을 때는 아무것도 렌더링하지 않고 싶을 때가 있습니다. 이때 return null을 사용하면 렌더링하지 않을 수 있습니다.
요약
- return null: 정말 비었다는 것을 의미할 때, 아무것도 렌더링 하고 싶지 않을 때
<></>: 여러 엘리먼트를 추가 html 요소없이 묶어서 렌더링하고 싶을 때
관련 포스트가 4개 있어요.
useSyncExternalStore가 무엇일까?

React 18 useSyncExternalStore에 대해서
CSS flex box의 align-items의 flex-start와 baseline의 차이점에 대해서

CSS에서 align-items의 flex-start와 baseline의 차이점
maxLength를 넣고 이모지를 넣으면 브라우저마다 계산되는 것이 다르다.

HTML `<input />`의 maxLength 동작이 safari에서 다른 이슈
스크롤 관련 CSS Property 중 하나인 overscroll-behavior에 대해 알아보자.
