[React] React ๊ธฐ๋ณธ - CRA
์๋ง ๊ณผ์ ์ ์งํํ๋ฉฐ ๋ฆฌ์กํธ๋ฅผ ์ฌ์ฉํ ๊ฒ ๊ฐ๋ค. ์์ง ๋ฆฌ์กํธ๊ฐ ์ต์ํ์ง ์์ ์๋น ๊ณผ์ ๋์ React๋ก ์ํ๋ ๊ฑธ ๊ตฌํํ ์ ์์ ์ ๋๋ก๋ง ํ์ตํ๊ณ , ์ดํ ๋ณธ ๊ณผ์ ์์ ๋ณธ๊ฒฉ์ ์ผ๋ก ์ฌ์ฉํ๋ฉฐ ๊น์ด ์๊ฒ ์ ์ฉ ๋ฐ ํ์ตํ ์์ ์ด๋ค. 1๋ฌ ๋ฐ ๋์ ๋งค์ผ๋งค์ผ ํ์ตํ๋ฉฐ ํ๋ก์ ํธ๋ฅผ ์งํํด๋ณด์
React๋?
๋ฆฌ์กํธ๋ JS๊ฐ ์ฒ๋ฆฌํด์ผํ ์ด๋ฒคํธ๊ฐ ๋ค์ํด์ง๊ณ , DOM๋ ๋ค์ํด์ง๊ฒ ๋๋ฉด ์ ๋ฐ์ดํธ๋ฅผ ํ๋ ๊ท์น๋ ๋ง์ด ๋ณต์กํ ๊ธฐ์กด ๊ฐ๋ฐ ๋ฐฉ๋ฒ์ ์์ ํ ๋ฐ๊พธ๋ ํ๋ ์์ํฌ์ด๋ค. ๋ฆฌ์กํธ๋ ์ด๋ ํ ์ํ๊ฐ ๋ฐ๋์์ ๋, DOM์ ์ ๋ฐ์ดํธํ๋ ๊ฒ ์๋๋ผ ์์ ๋ค ๋ ๋ฆฌ๊ณ , ์ฒ์๋ถํฐ ๋ชจ๋ ๊ฑธ ์๋ก ๋ง๋ค์ด์ ๋ณด์ฌ์ค๋ค๋ ์์ด๋์ด์์ ๊ฐ๋ฐ๋์๋ค.
๋ค ๋ ๋ฆฌ๊ณ ์๋ก ๋ง๋ค๋ฉด ๋๋ฆฌ์ง ์์๊น?
๋ฆฌ์กํธ๋ Virtual DOM์ ์ด์ฉํด ์๋๋ฅผ ํด๊ฒฐํ๋ค. ๋ฉ๋ชจ๋ฆฌ์ ์กด์ฌํ๋ ๊ฐ์์ DOM ์ด๋ฉฐ JavaScript ๊ฐ์ฒด์ด๋ฏ๋ก ์๋๊ฐ ํจ์ฌ ๋น ๋ฅด๋ค!
์ ๋ฐ์ดํธ๊ฐ ํ์ํ ๊ณณ์ UI๋ฅผ Virtual DOM์ ์ด์ฉํด ๋ ๋๋งํ๋ค.
๐ฅ ๋ฆฌ์กํธ๋ ์ํ ๋ณํ์ ์ด๋ป๊ฒ DOM์ ์ ๋ฐ์ดํธ ํ์ง?! ์ ๋ํ ๊ณ ๋ฏผ ์์ด ๋น ๋ฅธ ์ฑ๋ฅ์ผ๋ก ์๋ก ๋ง๋ค์ด ๋ฒ๋ฆฐ๋ค!
CRA
npx create-react-app (ํ๋ก์ ํธ ๋ค์)
CRA๋ก ํ๋ก์ ํธ๋ฅผ ์์ฑํ ์ ์๋ค.
์ฒ์์ ์ ๋๋ ํ ๋ฆฌ ์ฒ๋ผ ๊ตฌ์ฑ๋์ด์์ ๊ฒ์ด๋ค.
์ฐ๋ฆฌ๋ ๊ธฐ์กด ๊ตฌ์ฑ์ ์ฌ์ฉํ์ง ์์ ๊ฒ์ด๋ฏ๋ก ์๋์ ๊ฐ์ด ํ์ ์๋ ๊ฑด ์ญ์ ํด์ฃผ์
// App.js
function App() {
return <div className='App'>
<h1>Hello REACT!</h1>
</div>;
}
export default App;
// index.js
// react์์ ํ๋ฉด์ renderํ๋ ํ์ผ
import React from 'react';
import ReactDOM from 'react-dom';
import App from './App';
ReactDOM.render(
<React.StrictMode>
<App />
</React.StrictMode>,
document.getElementById('root')
);
srcํด๋์ App.js, index.js๋ฅผ ์ผ๋จ ์์ ๊ฐ์ด ์์ ํด์ฃผ์.(cssํ์ผ ๋ฐ icon ๋ฑ์ด ์ฐ๋๋์ด ์์ด ์ญ์ ํ์ผ๋ ์ฐ๋ ํด์ )
index.js์์ ReactDOM์ ๋๋๋ง ํ๋ค๋ ๊ฑธ ๋ณด๋ ๋ฌด์ธ๊ฐ๋ฅผ ํ๋ฉด์ ๋์ด์ฃผ๋ ๊ฒ์ด๊ณ , StrictMode๋ก App ์ปดํฌ๋ํธ๋ฅผ id๊ฐ์ด root์ธ ๊ณณ์ ๋๋๋ง ํ๋ค๋ ๊ฒ ๊ฐ๋ค.
์ฌ๊ธฐ์ ์ ๊น ๋ฆฌ์กํธ ์ปดํฌ๋ํธ์ ๋ํด ์์๋ณด์.
๋ฆฌ์กํธ๋ style, view ๋ฑ ์ปดํฌ๋ํธ๋ฅผ ๋ง๋ค์ด import, export๋ฅผ ํตํด moduleํ ํ์ฌ ์กฐ๋ฆฝํด์ ๋ง๋ ๋ค.
์ด๋ ๋ฆฌ์กํธ์ ๊ฐ๋ ฅํ ์ฅ์ ์ด๋ฉฐ, ๊ฐ๋ ์ฑ ๋ฐ ์ ์ง๋ณด์๊ฐ ํฅ์๋๋ค.
๋ํ ๐ฅ์ปดํฌ๋ํธ์ ์ฒซ ๋ฌธ์๋ ๊ผญ ๋๋ฌธ์์ฌ์ผ ํ๋ค!
๋ค์ ๋์์์ id๊ฐ์ด root์ธ ํ๊ทธ๊ฐ ์ด๋์์๊น?
public์ index.html ํ์ผ๋ก ๊ฐ๋ณด์.
31๋ฒ์งธ ์ค์ด id๊ฐ์ด root์ธ div ํ๊ทธ๊ฐ ๋ณด์ธ๋ค. ์ ๋ถ๋ถ์ render๋ฅผ ํด์ ํ๋ฉด์ ํ์ํด์ฃผ๋ ๊ฒ์ด๋ค.
์๋ฆฌ๋ฅผ ๋์ถฉ ์์์ผ๋ ํฐ๋ฏธ๋์์ ํด๋น ๋๋ ํฐ๋ฆฌ๋ก ์ด๋ ํ
npm run start
๋ฅผ ์์ฑํด๋ณด์!
๊ทธ๋ผ ์ด๋ ๊ฒ ๋ฐ๊ฒจ์ค ๊ฒ์ด๋ค. ๋ค์์ JSX๋ฌธ๋ฒ๊ณผ useState, Form ์ ์ด ๋ฑ์ ํ์ตํด๋ณด์!