✅ 반환값이 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 |