1. ๊ฐ์
์ง๊ธ๊น์ง JSX์ ๋ํ ์ด๋ก ์ ๊ฐ๋จํ๊ฒ ์ ๋ฆฌํ์๋ค. ์ด์ JSX ๋ฌธ๋ฒ์ ์ด์ฉํ ๊ฐ๋จํ ์ค์ต์ ํ๊ณ ์ ํ๋ค.
create-react-app ์ ์ด์ฉํ์ฌ, react์ ๋ํ ๊ธฐ๋ณธ์ ์ธ ์ค์ผ๋ ํค ์ฝ๋๋ฅผ ๋ฐ๊ณ ๊ทธ src ํด๋ ๋ฐ์ Chapter_03์ด๋ผ๋ ํด๋๋ฅผ ํ๋ ๋ง๋ ๋ค. ๊ทธ๋ฆฌ๊ณ ์์ ๊ฐ์ด Book.jsx ์ Library.jsx ํ์ผ์ ํ๋์ฉ ๋ง๋ค๊ฒ ๋ค.
2. Book.jsx
import React from "react";
function Book (props) {
return (
<div>
<h1>{`์ด ์ฑ
์ ์ด๋ฆ์ ${props.name} ์
๋๋ค.`}</h1>
<h2>{`์ด ์ฑ
์ ์ด ${props.numOfPage}ํ์ด์ง๋ก ์ด๋ค์ ธ ์์ต๋๋ค.`}</h2>
</div>
);
}
export default Book;
์ฝ๋์ ๋ํ ์ค๋ช ์ ํ๊ฒ ๋ค. Book์ด๋ ํจ์๋ props๋ฅผ ์ธ์๋ก ๋ฐ๋๋ค. props๋ ๊ฐ์ฒด์ ํํ์ธ ๋ฏ ํ๋ค. ๋ฐ์์ ๋ณด๋ฉด ์ ํ๊ธฐ๋ฒ์ผ๋ก props์ ๊ฐ๋ค์ ๊ณจ๋ผ๋ด์ ์ฌ์ฉํ๊ณ ์๋ค. ์ฌ๊ธฐ์ props๋ Html ํ๊ทธ์ ์์ฑ๋ค์ ๋ฌถ์ด๋์ ๊ฐ์ฒด์ด๋ค. ์ด ์๋ฏธ๊ฐ ์๋ฟ์ง ์์ ์ ์๋๋ฐ, ๋ฐ์์ ๋ ํ์ ํ๊ฒ ๋ค. ์์ ์ฝ๋๋ default๋ก Book์ด๋ผ๋ ํจ์๋ฅผ export(์์ถ)ํ๊ณ ์๋ค. ์ด๋ ๊ฒ ์์ถํ๋ฉด, ํ๋ก์ ํธ ๋ด์ ๋ค๋ฅธ jsx ํ์ผ์์ import(์์ )ํ์ฌ ํด๋น ํจ์๋ฅผ ์ฌ์ฉํ ์ ์๊ฒ ๋๋ค. ์ฌ์ฉ์ ์ด๋ป๊ฒ ํ ๊น? ๋ค์ Library.jsx๋ฅผ ์ดํด ๋ณด๋ฉฐ ์ด์ผ๊ธฐํ์.
3. Library.jsx
import React from "react";
import Book from "./Book";
function Library(props) {
return (
<div>
<Book name="์ฒ์ ๋ง๋ ํ์ด์ฌ" numOfPage={300}/>
<Book name="์ฒ์ ๋ง๋ AWS" numOfPage={400}/>
<Book name="์ฒ์ ๋ง๋ ๋ฆฌ์กํธ" numOfPage={500}/>
</div>
)
}
export default Library;
Library๋ผ๋ ํจ์๋ Book์ด๋ ํจ์๋ฅผ ์์ ํ์ฌ ์ฌ์ฉํ๊ณ ์๋ค. ์ ๋ณด๋ฉด Book์ ์์ฑ์ผ๋ก name๊ณผ numOfPage๋ฅผ ์ ์ํ๊ณ ํด๋น ์์ฑ๋ค์ ๊ฐ ๋ํ ์ ์ํด๋์๋ค. ๊ฐ์ด ์ข ์ค๋๊ฐ? ์ ๋ ๊ฒ Book์ด๋ ํ๊ทธ์์ ์์ฑ = "๊ฐ" ํํ๋ก ๊ธฐ์ ํด๋์ผ๋ฉด Props๋ผ๋ ๊ฐ์ฒด์ ์์ฑ: ๊ฐ ํํ๋ก ์ ์ ๋์ด ๋ค์ด๊ฐ๊ฒ ๋๊ณ , ๊ทธ๊ฒ์ Book ๋ด๋ถ ํจ์์์ ์ฌ์ฉํ ์ ์๋ ๊ฒ์ด๋ค. ๊ทธ๋ฆผ์ผ๋ก ํํํ๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
์ด์ ํด๋น Library๋ฅผ ๋ฃจํธ์ธ index.jsx๊น์ง ์ ๋ฌํ์ฌ ์ฌ์ฉํ๊ณ ํ๋ฉด์ ๋์๋ณด์.
4. Index.jsx
import React from 'react';
import ReactDOM from 'react-dom/client';
import './index.css';
import App from './App';
import reportWebVitals from './reportWebVitals';
import Library from './chapter_03/Library';
const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(
<React.StrictMode>
<Library />
</React.StrictMode>
);
// If you want to start measuring performance in your app, pass a function
// to log results (for example: reportWebVitals(console.log))
// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals
reportWebVitals();
์๋ React.StrictMode ํ๊ทธ ์ฌ์ด์ <app /> ์ด ์์๋๋ฐ, ์ด๋ฅผ Library ํ๊ทธ๋ก ๊ต์ฒด ํ๋ค. ์ด๋ ๊ฒ ํ๊ณ ์คํํ๋ฉด, ํ๋ฉด์ ๋ค์๊ณผ ๊ฐ์ด ๋ฌ๋ค.