μ€λ μ²μμΌλ‘ νλ‘ νΈμλ κ°λ°μ λ©΄μ μ λ΄€λ€.
CTOλλ λ무 μ’μ λΆμ΄μ
¨κ³ λ§μ μ λ€μ΄μ£Όμ
μ, 첫 λ©΄μ μ΄κ³ λ§μ΄ μ λ¦¬κ° μλμμλ λΆκ΅¬νκ³ λΉκ΅μ νΈν λΆμκΈ°μμ λ΄κ° νκ³ μΆμ λ§μ λ―Έμνκ²λλ§ νκ³ λ§λ¬΄λ¦¬ν μ μμλ κ² κ°λ€.
λ€ κΈ°μ΅μ λ¨κ³ μ’μ λ§μ λ§μ΄ λ€μ΄μ ν©λΆ μ¬λΆμ μκ΄μμ΄ μμ€ν μκ°μ΄ λ κ² κ°κΈ°λ νμ§λ§, κ·Έλλ react
μ κ΄ν΄μ λμ΄κ°μ§ μ λ μ§λ¬Έμ λ°μλλ° μμ μ
λ λͺ»λ μ§λ¬Έμ΄ μμ΄μ κΈ°λ‘νκ³ μ νλ€.
μ£Όλ μ
무λ react-native
λ₯Ό ν΅ν μ± κ°λ°λ‘ 보μλλ° κ·ΈλμμΈμ§ JavaScript
λ³΄λ€ react
μ λν μ§λ¬Έμ κ°λ¨νκ² λκ° μ λ μ£Όμ
¨λ€.
μ λ§ κΈ°μ΄μ μΈ κ²μ΄μλλ°λ 쑰리μκ² λλ΅μ νμ§ λͺ»νλ λ΄ μμ μ λ³΄κ³ λ°μ±μ ν μκ°μ΄κΈ°λ νλ€!
λ°μ±λ§ νκ³ μ΄λ κ² λκΈ°λ©΄ μλ―Έκ° μκΈ°μ λ°©μΉν΄λλ λΈλ‘κ·Έμ κΈ°λ‘ν΄λκ³ μ νλ€.
react-dom
μ΄ν΄νκΈ°import React from 'react';
import ReactDOM from 'react-dom';
import './index.css';
import App from './app';
ReactDOM.render(
<React.StrictMode>
<App />
</React.StrictMode>,
document.getElementById('root')
);
React
λ μμ μλ°μ€ν¬λ¦½νΈμ΄κ³ , μ΄ μλ°μ€ν¬λ¦½νΈλ₯Ό μ΄μ©ν΄ μ»΄ν¬λνΈλ₯Ό λ§λ€μ΄λκ°λ€.
μ€μ λ‘ λΈλΌμ°μ κ° μ΄ν΄ν μ μλ κ²μ html
, css
, JavaScript
λΏμ΄λ©°, μ΄κ²λ€λ§ μ΄μ©ν μ μλ€.
κ·Έλμ μμ μ½λμ κ°μ μμ λ°λ²¨μ μ΄μ©ν΄μ μμ μλ°μ€ν¬λ¦½νΈλ‘ λ³νμ΄ λλ€!
κ·Έλ¦¬κ³ λμ μ°λ¦¬κ° λ§λ μ»΄ν¬λνΈλ₯Ό html
κ³Ό μ°κ²°νλ μμ
μ ν΄μ€μΌνλλ° μ΄κ²μ ν΄μ£Όλ κ²μ΄ λ°λ‘ β¨react-dom
β¨μ΄λ€.
κ·Έλμ μ¬μ©μμκ² κΆκ·Ήμ μΌλ‘ λ°°ν¬λμ΄μ§λ κ²μ index.html
μ΄λ€.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<link rel="icon" href="%PUBLIC_URL%/favicon.svg" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="theme-color" content="#000000" />
<meta
name="description"
content="Web site created using create-react-app"
/>
<title>App</title>
</head>
<body>
<noscript>You need to enable JavaScript to run this app.</noscript>
<div id="root"></div>
</body>
</html>
body
μ 보면 <div>
νκ·Έ λ¬λ νλκ° μλ κ±Έ λ³Ό μ μλ€.
<div id="root"></div>
μ΄κ²μ root
λΌλ id
λ₯Ό μ΄μ©ν΄μ μ°λ¦¬κ° JavaScript
μ μ°κ²°ν΄μ€κ±΄λ°
κ·Έκ²μ κ°λ₯νκ² νλ κ²μ΄ react-dom
μ΄λΌκ³ μκΉ μΈκΈνλ€.
λ€μ index.js
νμΌλ‘ λμμ€λ©΄,
import React from 'react';
import ReactDOM from 'react-dom';
import './index.css';
import App from './app';
ReactDOM.render(
<React.StrictMode>
<App />
</React.StrictMode>,
document.getElementById('root')
);
import ReactDOM from 'react-dom';
β‘οΈ react-dom
μ΄λΌλ λΌμ΄λΈλ¬λ¦¬μμ React
λΌλ ν΄λμ€λ₯Ό import ν΄μ¨λ€(κ°μ Έμ¨λ€).
ReactDOM.render(
<React.StrictMode>
<App />
</React.StrictMode>,
β‘οΈ κ°μ Έμ¨ ReactDOM
μ΄λΌλ ν΄λμ€μ μλ render
ν¨μλ₯Ό μ΄μ©ν΄μ
document.getElementById('root')
);
β‘οΈ document(νμ΄μ§)μ μλ id
κ° root
λΌλ μμλ₯Ό κ°μ Έμμ
μ¦, index.html
μ μλ <div id="root"></div>
μ΄ μμμ μ°λ¦¬μ root μ»΄ν¬λνΈλ₯Ό μ°κ²°μμΌμ€λ€.
π‘ κ·Έλμ, render
ν¨μκ° νΈμΆμ΄ λλ©΄ index.html
μ μλ
<div id="root"></div>
μ¬κΈ° μ΄ λΆλΆμ μ°λ¦¬ μ»΄ν¬λνΈκ° μ°κ²°μ΄ λλ κ²μ΄λ€!
(<React.StrictMode />
λ μλ΅μ΄ κ°λ₯νλ€.)
ReactDOM.render(
<App />,
document.getElementById('root')
);
root
λΌλ id
λ₯Ό κ°μ§ μμμ μ μΌ μμμ μλ <App />
μ΄λΌλ μ»΄ν¬λνΈλ₯Ό μ°κ²°νλκ±°λ€! λΌκ³ μ΄ν΄ν μκ° μλ€.
κ·Έλ¦¬κ³ μ΄ <App />
μ΄λΌλ κ²μ App.jsx
μ μ μλ μ»΄ν¬λνΈλ€.
import React from 'react';
import from './app.css';
function App() {
return <h1>hello :)</h1>;
}
export default App;
App.jsx
μ <h1>hello :)</h1>
λ₯Ό μΆλ ₯νλκΉ κ·Έ hello
κ° μ°κ²°λμ΄μ <div>
νκ·Έ μμ λ€μ΄μ¨ κ²μ νμΈν μ μλ€.
μ΄λ κ² μ μΌ μμμ μ»΄ν¬λνΈλ₯Ό μ°κ²°ν΄μ£Όλ κ²μ΄ react-dom
μ΄λ€.
π‘ κ·Έλμ νμ index.js
νμΌμμ μ°κ²°μ ν΄μ£Όκ³ ,
μ€μ λ‘ μ°λ¦¬κ° μ»΄ν¬λνΈλ₯Ό λ§λ€μ΄λκ° λλ app.jsx
μμλΆν° μμνλ©΄ λλ€.
π§ μ¬κΈ°μ μ°λ¦¬κ° λ°°μΈ μ μλ κ²μ?
react
μ»΄ν¬λνΈ λΌλ κ²μ λ§λ² κ°μ κ²μ΄ μλλΌ,
κ²°κ΅μhtml
λ‘ λ³νμ΄ λμ΄μ μ¬μ©μμκ², λΈλΌμ°μ μκ² νκΈ°κ° λλ κ²μ΄λ€!
λ§μΉ¨ μ λ React DOMκ³Ό renderμ λν΄μ κΆκΈνλ μ μ΄ μ겨μ μ°Ύμ보λλ° λ§μ΄ μ΄λ €μμ μ΄ν΄κ° μ μ κ°λλΌκ΅¬μ! λλΆμ μ°¨κ·Όμ°¨κ·Ό 곡λΆν μ μκ² μ΄μ!!!
κ°μ¬ν΄μ! :)