✍ 컴포넌트 함수로 사용되기 위해서는?
1. 대문자로 시작되어야 한다. (App O, app x)
2. 함수에서 렌더링 가능한 값이 반환 되어야 한다.
결론!
평범한 자바스크립트 함수를 만든 후 대문자로 시작하는 적합한 이름을 부여하면 JSX 코드가 반환 된다!
🔍 강의랑 리액트 버전이 달라져서 GPT한테 물어봄
리액트에서는 index.html 파일이 앱의 진입점이지만, 실제로 App.js를 불러와서 렌더링하는 작업은 JavaScript 코드에서 이루어진다. HTML 파일만 보면 App.js를 직접 불러오는 코드가 없는 것처럼 보이지만, 실제로는 React의 엔트리 포인트 파일 (보통 index.js 또는 main.js) 에서 App.js를 불러와 렌더링하고 있다.
✨ 리액트 앱이 렌더링되는 과정
- index.html
- <div id="root"></div> 가 있음 → 여기에 React가 마운트됨.
- index.js (또는 main.js)
- 여기에서 App.js를 import 하고, ReactDOM.render() 또는 createRoot().render() 를 사용해서 <div id="root"></div> 안에 App 컴포넌트를 렌더링함.
📌 index.js (보통 이런 코드가 있음)
🔍 코드 해석
- import App from "./App"; → App.js에서 App 컴포넌트를 불러옴.
- document.getElementById("root") → index.html의 <div id="root"></div>을 찾음.
- root.render(<App />); → App 컴포넌트를 root 안에 렌더링.
📌 왜 index.html에는 App.js를 불러오는 코드가 없을까?
- React는 CSR (Client-Side Rendering) 방식으로 동작하기 때문!
- HTML 파일은 React의 진입점 역할만 하고, 실제 동작은 index.js에서 JavaScript 코드가 실행되면서 시작됨.
- 브라우저가 index.html을 로드하면, JavaScript가 실행되면서 App.js를 가져와 화면에 렌더링함.
💡 결론
강의에서 index.js를 한 번 확인해 보면 될 거야! ReactDOM.createRoot(document.getElementById("root")).render(<App />); 같은 코드가 있을 거야.
React 버전이 달라지면서 ReactDOM.render()가 createRoot().render()로 바뀐 점만 조심하면 돼! 🚀
ChatGPT의 말:
이제 코드가 확실해졌네! 🔍
이 index.js 파일이 React 앱의 진입점 역할을 하고 있고, App.js를 가져와서 index.html의 <div id="root"></div>에 렌더링하는 핵심 부분이야.
📌 코드 흐름 다시 정리해볼게!
1️⃣ HTML 파일 (index.html)
- 이 div가 React 앱이 실제로 그려지는 자리야.
- HTML에는 App.js를 직접 불러오는 코드가 없음.
2️⃣ 엔트리 포인트 (index.js)
- import App from "./App";
→ App.js에서 App 컴포넌트를 가져와서 사용 준비. - document.getElementById("root");
→ index.html의 <div id="root"></div>을 가져옴. - ReactDOM.createRoot(entryPoint).render(<App />);
→ App.js에서 가져온 App 컴포넌트를 root 안에 렌더링.
🎯 정리하면!
- HTML (index.html)
- div#root가 존재하지만 아무 내용 없음.
- React 실행 (index.js)
- App.js를 가져와서 <div id="root"></div> 안에 집어넣음.
- React 렌더링 (App.js)
- App.js에 정의된 <header>와 <main> 내용이 최종적으로 브라우저에 표시됨.
🚀 핵심 포인트
✔️ HTML에 직접 App.js를 불러오는 게 아니라, index.js에서 JavaScript 코드로 렌더링을 담당함.
✔️ ReactDOM.createRoot(entryPoint).render(<App />); 이 부분이 실질적으로 App.js의 내용을 브라우저 화면에 표시하게 만드는 핵심 코드야!
이제 이해됐을까? 혹시 더 궁금한 부분 있으면 질문해줘! 😊
'리액트 > 유데미강의' 카테고리의 다른 글
[React] 리액트 기본 용어 정리 (0) | 2025.03.08 |
---|---|
[React] 리액트 심화 / JSX를 꼭 사용하지 않아도 되는 이유 (0) | 2025.02.23 |
[React] 이벤트 처리하기 (0) | 2025.02.11 |
[React] 컴포넌트 파일 분리하기 (0) | 2025.02.10 |
[React] 리액트 컴포넌트 만들기 (1) | 2025.02.09 |