웹 개발/프론트엔드 개발

반환값이 JSX인 모든 경우의 수 정리

Blue_bull 2025. 2. 12. 21:25

반환값이 JSX인 모든 경우의 수 정리

🚀 React 컴포넌트에서 JSX를 반환할 수 있는 모든 가능한 경우를 정리했습니다.
📌 JSX 반환이란?
React 컴포넌트가 JSX를 반환할 때, 여러 형태의 JSX를 반환할 수 있습니다.
JSX는 React에서 HTML-like 코드이지만 내부적으로 JavaScript 객체로 변환됩니다.


🔹 1. JSX를 반환하는 모든 경우의 수

경우 JSX 반환 예제 설명 오류 여부
✅ 단일 JSX 반환 return <h1>Hello</h1>; 기본적인 JSX 반환 (React 요소) ❌ 없음
✅ 여러 개의 JSX 요소 반환 (Fragment 사용) return <><h1>Title</h1><p>Text</p></>; <></>를 사용해 여러 요소 반환 ❌ 없음
✅ 여러 개의 JSX 요소 반환 (div 사용) return <div><h1>Title</h1><p>Text</p></div>; <div>로 감싸서 반환 ❌ 없음
✅ JSX 배열 반환 return [<h1 key="1">Title</h1>, <p key="2">Text</p>]; 배열로 JSX 반환 (각 요소에 key 필요) ❌ 없음
React.createElement() 반환 return React.createElement('h1', null, 'Hello'); JSX 없이 React.createElement 사용 ❌ 없음
null 반환 (JSX 대신) return null; 화면에 아무것도 렌더링하지 않음 ❌ 없음
❌ JSX를 반환하지 않는 경우 return; 또는 return 42; JSX 또는 null이 아닌 값을 반환하면 오류 발생 ✅ 오류 발생

🔹 2. JSX 반환 가능한 상세 예제

1) 단일 JSX 반환 (기본적인 JSX 컴포넌트)

function MyComponent() {
  return <h1>Hello, React!</h1>; // ✅ JSX 반환
}

📌 단일 JSX 요소를 반환하는 가장 기본적인 형태입니다.
📌 React는 <h1> 태그를 React.createElement()로 변환하여 렌더링합니다.


2) 여러 개의 JSX 반환 (Fragment 사용)

function MyComponent() {
  return (
    <>
      <h1>Title</h1>
      <p>Description</p>
    </>
  ); // ✅ JSX 반환 (Fragment 사용)
}

📌 여러 개의 JSX 요소를 감싸기 위해 <></>(Fragment)를 사용합니다.
📌 Fragment는 추가적인 div를 생성하지 않기 때문에 최적화된 방법입니다.


3) 여러 개의 JSX 반환 (div로 감싸기)

function MyComponent() {
  return (
    <div>
      <h1>Title</h1>
      <p>Description</p>
    </div>
  ); // ✅ JSX 반환 (div 사용)
}

📌 Fragment 대신 div를 사용하여 여러 요소를 감싸서 반환하는 방법입니다.
📌 React는 반드시 하나의 부모 요소가 있어야 하므로 <div> 또는 <></>를 사용해야 합니다.


4) JSX 배열 반환 (key 필수)

function MyComponent() {
  return [
    <h1 key="1">Title</h1>,
    <p key="2">Description</p>
  ]; // ✅ JSX 배열 반환 (key 필요)
}

📌 배열을 반환할 때는 key 속성을 추가해야 React가 각 요소를 올바르게 렌더링할 수 있습니다.
📌 이 방식은 <></>(Fragment)와 유사하지만, 배열이므로 부모 요소가 필요하지 않습니다.


5) React.createElement()를 사용한 JSX 반환

function MyComponent() {
  return React.createElement("h1", null, "Hello, React!"); // ✅ JSX 없이 React 요소 반환
}

📌 JSX는 내부적으로 React.createElement()로 변환되므로, 이를 직접 사용할 수도 있습니다.


6) null 반환 (렌더링하지 않음)

function MyComponent() {
  return null; // ✅ 정상 실행 (아무것도 렌더링되지 않음)
}

📌 컴포넌트가 실행되지만 화면에는 아무것도 표시되지 않습니다.
📌 return null;을 사용하면 해당 컴포넌트가 렌더링되지 않음.


🔹 3. JSX를 반환하지 않는 경우 (오류 발생)

🚨 JSX를 반환하지 않으면 React에서 오류가 발생합니다.

1) return이 없는 경우 (오류 발생)

function MyComponent() {
  console.log("Hello, React!"); // ❌ JSX 반환 없음
}

📌 React는 return이 없는 컴포넌트를 렌더링할 수 없으므로 오류 발생.

해결 방법: JSX 또는 null을 반환해야 함.

function MyComponent() {
  return <h1>Hello, React!</h1>; // ✅ JSX 반환
}

2) 숫자를 반환하는 경우 (오류 발생)

function MyComponent() {
  return 42; // ❌ 오류 발생 (숫자는 JSX가 아님)
}

📌 React 컴포넌트는 JSX 또는 null을 반환해야 하므로, 숫자를 반환하면 오류 발생.

해결 방법: JSX로 숫자를 감싸기

function MyComponent() {
  return <h1>42</h1>; // ✅ JSX 반환
}

3) 객체를 반환하는 경우 (오류 발생)

function MyComponent() {
  return { key: "value" }; // ❌ 오류 발생 (객체는 JSX가 아님)
}

📌 React는 객체를 직접 렌더링할 수 없으므로 오류 발생.

해결 방법: JSON.stringify()를 사용하여 문자열로 변환

function MyComponent() {
  return <h1>{JSON.stringify({ key: "value" })}</h1>; // ✅ JSX 반환
}

4) undefined 반환하는 경우 (오류 발생)

function MyComponent() {
  return undefined; // ❌ 오류 발생
}

📌 React는 undefined를 렌더링할 수 없으므로 오류 발생.

해결 방법: null을 반환

function MyComponent() {
  return null; // ✅ 정상 실행 (아무것도 렌더링되지 않음)
}

🔥 최종 정리

React 컴포넌트에서 JSX를 반환할 수 있는 모든 경우

경우 JSX 반환 가능 여부 오류 여부
✅ 단일 JSX 반환 가능 ❌ 없음
✅ 여러 개의 JSX 반환 (Fragment 사용) 가능 ❌ 없음
✅ 여러 개의 JSX 반환 (div 사용) 가능 ❌ 없음
✅ JSX 배열 반환 (key 필요) 가능 ❌ 없음
React.createElement() 반환 가능 ❌ 없음
null 반환 가능 (렌더링되지 않음) ❌ 없음
return 없음 불가능 ✅ 오류 발생
❌ 숫자 반환 불가능 ✅ 오류 발생
❌ 객체 반환 불가능 ✅ 오류 발생
undefined 반환 불가능 ✅ 오류 발생

🚀 즉, JSX 또는 null을 반환하는 경우에만 React 컴포넌트로 동작하며, 그 외 값(숫자, 객체 등)은 오류가 발생합니다! 😊

'웹 개발 > 프론트엔드 개발' 카테고리의 다른 글

React Hook 정리  (0) 2025.04.10
JavaScript의 `try-catch` 구문  (0) 2025.03.18
250212 복습4  (0) 2025.02.12
250212 복습2  (0) 2025.02.12
객체와 컴포넌트의 차이  (0) 2025.02.12