2. React 기본
1. 기본구조
- index.html 파일이 진입점 id=root 태그에 내용이 삽입
- src/main.jsx에서 코드 처리
index.html
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<link rel="icon" type="image/svg+xml" href="/vite.svg" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Vite + React</title>
</head>
<body>
<div id="root"></div>
<script type="module" src="/src/main.jsx"></script>
</body>
</html>
- index.html파일의 id값이 root를 찾아서 App컴포넌트를 랜더링해서 넣어준다.
src/main.jsx
import { StrictMode } from 'react'
import { createRoot } from 'react-dom/client'
import './index.css'
import App from './App.jsx'
createRoot(document.getElementById('root')).render(
<StrictMode>
<App />
</StrictMode>,
)
다른 컴포넌트에서 import 해서 사용할 컴포넌트는 반드시 export 해야 한다. return 함수안에 최상위 태그는 반드시 하나만 존재해야 한다.
src/App.jsx
import Header from "./Header"
import Footer from "./Footer"
import Food from "./Food";
function App() {
return (
<>
<Header/>
<Food/>
<Food/>
<Footer/>
</>
);
}
export default App
2. 컴포넌트
- UI를 독립적이고 재사용 가능한 단위로 나눈 것
- HTML, CSS, JavaScript 로직을 묶어 하나의 “블록”처럼 사용
- React 앱은 여러 컴포넌트가 모여서 화면을 구성
return함수에서 사용한 태그는 html의 태그가 아니다.
JSX(javascript XML)이다.
src/Header.jsx
function Header(){
return(
<header>
<h1>My website</h1>
<nav>
<ul>
<li><a href="#">Home</a></li>
<li><a href="#">About</a></li>
<li><a href="#">Service</a></li>
<li><a href="#">Contact</a></li>
</ul>
</nav>
<hr/>
</header>
);
}
export default Header
JSX에서 {}에는 값만 출력한다. 표현식은 안됨
src/Footer.jsx
function Footer(){
return(
<footer>
<p>© {new Date().getFullYear()} Your website name</p>
</footer>
);
}
export default Footer
src/Food.jsx
function Food(){
const food1 = "Orange";
const food2 = "Banana";
return(
<ul>
<li>Apple</li>
<li>{food1}</li>
<li>{food2.toLocaleUpperCase()}</li>
</ul>
);
}
export default Food