html νμΌμ΄ μ€λ‘μ§
νκ°
λ§ μ‘΄μ¬νλ€.
리μ‘νΈλ‘ λ§λ μΉμ¬μ΄νΈλ νμ΄μ§κ°νλ
λ§ μ‘΄μ¬νλ€. SPA (Single Page Application)
(νμ΄μ€λΆ, μΈμ€νκ·Έλ¨, ...)
SPA λ
νκ°
μ νμ΄μ§λ‘λ§ λ§λ€μ΄μ Έμλ μ± νΉμ μΉμ μλ―Ένλ€.
MPA λμ¬λ¬κ°μ νμ΄μ§
(html νμΌμ΄ μ¬λ¬κ°)λ‘ λ§λ€μ΄μ Έμλ μ± νΉμ μΉμ μλ―Ένλ€.
νλνλ λΆλ¬λ€κ° λ§λ€μ΄μ€μΌνλ€λ λΆνΈνμ ..
react νλ‘μ νΈμ μλ index.html μμ root divλ₯Ό μ°Ύμ μ¨λ€μμ κ·Έ μμλ€κ° κ·Έλ €μ£Όλ νμλ₯Ό νλ νμΌ : index.js
μλ!
κ·Έλμ, μκ°νκ²,,,?
리μ‘νΈ μμ,
λ°λλ "λΆλΆ"λ§ μ§μ λ€κ° κ·Έλ €μ£Όλ©΄ λμ§ μμκΉ??? λΌλ μκ°μνλ€.
물리μ DOMκ³Ό λμΌν κ°μ DOMμ λ§λ€κ³ ,
λ³ν΄μΌ νλ λΆλΆμ΄ μλ€λ©΄
, λ³νκΈ° μ μ κ°μ DOM ꡬ쑰μ λ³ννμ κ°μ DOM ꡬ쑰λ₯ΌλΉκ΅νμ¬
λ³ν λΆλΆλ§
물리μ DOMμ λ°μνλλ‘ μ½λλ₯Ό μ§λμμ "μλλ₯Ό ν₯μ"μν€λ λ°©λ²μ μ¬μ©νλ€
index.js
μμμλ
ReactDOM.createRoot(물리μ μΈDOMνκ·Έ)
ππ 물리μ DOMνκ·Έλ₯Ό 루νΈ(λΏλ¦¬)λ‘ νλ κ°μμ DOM νκ·Έλ₯Ό λ§λ€μ΄μ€
render(νκ·Έ)
ππ κ°μ DOM νκ·Έ μμ μμμΌλ‘ νΉμ νκ·Έλ₯Ό μΆκ°ν΄μ€* 17version μ render ν¨μ μμ°κ³ hydrate ν¨μλ₯Ό μ΄λ€(λ Όλ¦¬λκ°μ) κ·Έλμ νμ¬μμλ 16versionμ΄λ 18versionμ¬μ©.
λͺ¨λ νκ·Έλ€μ κ°μ²΄μ΄λ€
XML(eXtensible Markup Language)
Markup Language : <> λ‘ μ΄λ£¨μ΄μ§ μΈμ΄
μλ₯Όλ€μ΄,
*μ 보μ λ¬*
μ¬λμ΄μλλ°, μ΄λ¦μ κ°μμ§κ³ ,
λμ΄λ 15μ΄μ΄κ³ νκ΅λ λ€λμ₯μ€νκ΅
μ¬λμ΄μλλ°, μ΄λ¦μ νκΈΈλμ΄κ³ ,
λμ΄λ 20μ΄μ΄κ³ νκ΅λ λ€λμ₯λνκ΅
μ¬λμ΄μλλ°, μ΄λ¦μ κΉμ² μμκ³ ,
λμ΄λ 30μ΄μ΄κ³
κ³Όκ±° :
μ¬λκ°μμ§15λ€λμ₯μ€νκ΅μ¬λνκΈΈλ15λ€λμ₯μ€νκ΅
* μμ§λ κΈμ΅κΆμμλ μ΄λ κ² μ΄λ€, μλκ° λΉ λ₯΄κΈ° λλ¬Έμ
xml
<μ¬λ μ΄λ¦="κ°μμ§" λμ΄="15" νκ΅="λ€λμ₯μ€νκ΅">
<μ¬λ μ΄λ¦="νκΈΈλ" λμ΄="20" νκ΅="λ€λμ₯λνκ΅">
<μ¬λ μ΄λ¦="κΉμ² μ" λμ΄="30" νκ΅="λ€λμ₯μ€νκ΅">
jsx λ μλ°μ€ν¬λ¦½νΈλ‘ ꡬνν XML
μλ°μ€ν¬λ¦½νΈλ‘ XMLμ ꡬννκΈ° μν΄μλ
ν¨μλ‘ κ΅¬ν
function μ¬λ (μ΄λ¦, age, νκ΅){
}
μ¬λ('κ°μμ§', 15, 'λ€λμ₯μ€νκ΅');
ππ <μ¬λ='κ°μμ§' age=15 νκ΅="λ€λμ₯μ€νκ΅">
νμΌ νμ₯μλ₯Ό .jsx --> νμ¬λ .jsλ‘ μ¨λ μμμ ν΄μν΄μ€
(* νμ
μ€ν¬λ¦½νΈλ μμ§ κ΅¬λΆ νμ)
πΎ React.StrictMode
<React.StrictMode></React.StrictMode>
μ격κ²μ¬λͺ¨λ, μ΅μ΄λ‘ κ·Έλ¦° ν λ€μ μ§μ λ€κ° 그리λ κ³Όμ μ μ€ννμ¬
λλ²
κ·Έλ Έμλλ μ΄μμ΄ μλμ§νμΈ
νκΈ° μν μ©λ
π λͺ λ Ήμ΄λ pacakge.json fileμ scriptsμμ μ€μ κ°λ₯
λͺ λ Ήμ΄λ₯Ό aaaλ‘ λ°κΎΌλ€λ©΄?
μ€μ§μ μΌλ‘, react-scripts startκ° μ€νλλ€.
νμ§λ§ aaaλΌλ λͺ λ Ήμ΄κ° μ΄λ―Έ μμμμλ€. λ³λͺ μ΄ aaaμΈκ²μ΄κ³ , μμ npm μ€ λͺ λ Ήμ΄λ³λͺ aaaλ₯Ό μ¨μ€μΌνλ€.
"npm aaa
" μ΄λ°μμΌλ‘.
npmμ λμμ§?? node.js μ€μΉν λ ν¨ν€μ§. κ°μ΄ μ€μΉλλ νλ‘κ·Έλ¨ κ΄λ¦¬μ
npm μμλλΌλ©΄? μΌμΌμ΄react-scripts start
λ₯Ό μ³μ€μΌνλ€.
jsx μ€ κΈ°μ‘΄ html νκ·Έ μ΄λ¦κ³Ό λκ°μ μ΄λ¦μΌλ‘ λ§λ€μ΄μ Έμλ νκ·Έλ€μ΄ μλ€
ππν΄μν λ htmlνκ·Έμ λμΌνκ² ν΄μ! λ§λ€λ λͺκ°μ§ μ°¨μ΄μ μμ!
html μλ μλ μμ±μ μ¨λ λλ€.
html
<h1 onclick="f()" aaa="κ°μμ§" id="title" class="important">μλ
νμΈμ</h1>
jsx
πΎ μ°¨μ΄μ ??
π1.**class**
λ‘ μ€μ νκ³ μΆμ λμμ**className**
μ κ°μ λ겨μ€μΌνλ€
π2. **μ΄λ²€νΈ**
- μΉ΄λ©νκΈ°λ²(λλ¬Έμ)λ‘ λ°λκ², ν¨μλ₯Ό μ€ννλκ²μ΄ μλ, ν¨μμ체λ₯Ό λ겨μ€μΌνλ€.
<h1 onClick=f aaa="κ°μμ§" id="title" className="important">μλ
νμΈμ</h1>
--> h1(aaa="κ°μμ§,id="title", className="important", children="μλ
");
λ΄λΆμ μΈ ν¨μμ μ½λλ₯Ό κ±°μ³μ
κ²°κ³Όλ‘ λμ€λκ²μ
<h1 id="title" class="important" onclick="f()">μλ
</h1>
-->μ΄λ¬ν htmlνκ·Έκ°μ²΄κ° κ²°κ³Όλ‘ λμ€κ² λμ΄μμ
:π μ»΄ν¬λνΈ
π 1. μ»΄ν¬λνΈλ λ°λμλλ¬Έμ
λ‘ μμν΄μΌνλ€.
μ»΄ν¬λνΈλ μ΄μ¨λjsx
μ΄κΈ° λλ¬Έμν¨μ
λ‘ λ§λ€μ΄μ§λ€.
(κ³Όκ±°μλ ν΄λμ€λ‘ λ§λ€μμ) --> (κΆμ₯ μν¨) -->νμ¬,ν¨μλ‘ λ§λ€κ² λ°μ ν¨.
d01MyComponent.js
//λλ§μ μ»΄ν¬λνΈ
function a(){
return "κ°μμ§";
}
function Su() {
return (
<>
<h1>κ°μμ§ μ»΄ν¬λνΈ</h1>
<p>λ΄κ° μ²μμΌλ‘ λ§λ λλ§μ xml, μ¦ λ¦¬μ‘νΈ μ»΄ν¬λνΈμ
λλ€.</p>
</>
);
}
export default Su;
App.js
import logo from './logo.svg';
import './App.css';
import Su from './day01/d01MyComponent';
function App() {
return (
<Su/>
);
}
export default App;
π 2. return λ λ νκ°λ§ returnλμ΄μΌ νλ€ (λ¬Άμ¬μ)
보ν΅μ divλ‘ λ¬Άμ΄μ returnμ νλλ°,
μ΄ divκ° μ λ§ μλ―Έμμ΄ λ¬Άμ΄μ£ΌκΈ° μν΄μλ§ μ¬μ©νλ€λ©΄ λΆνμνκΈ° λλ¬Έμ
κ·Έλ΄ κ²½μ°μλ fragment <></> λΉμ΄μλ νκ·Έλ₯Ό μ¬μ©νμ¬ λ¬Άμ΄μ€μ μλ€.
πμλ°μ€ν¬λ¦½νΈμμλ λ κ° μ΄μμ 리ν΄ν μ μκΈ° λλ¬Έμ μ°λ¦¬λ μμλ€μ νλμ νκ·Έλ‘ κ°μΈκ±°λ μλ―Έμλ νκ·Έμ μ¬μ©μ νΌνκΈ° μν΄ React Fragmentλ₯Ό μ¬μ©νλ κ².
<Fragment> </Fragment> λμ <> </> μ΄λ κ² μ¨λ λλ€.
π 3.λ΄μ©μ΄ μλ jsx λ μ΄λ»κ² νκΈ°?
html --> jsx <img> <img/> <input> <input/> <p>μλ </p> <p>μλ </p> <Su>μλ </Su> <p></p> <p/> or <p></p> <Su />
π 4. jsxλ‘ ν΄μν΄μΌνλ κ²½μ°μ jsλ‘ ν΄μν΄μΌνλ κ²½μ°λ μ΄λ»κ² ꡬλΆν κΉ?
<>μ μμκ³Ό λμ κΈ°μ€μΌλ‘ jsxλ‘ ν΄μ, κ·ΈμΈλ javascriptλ‘ ν΄μ,
jsx μμͺ½μμ javascript λͺ λ Ήμ΄λ‘ ν΄μν΄μΌνλ κ²½μ°λ ??
{}
λ₯Ό ν΅ν΄ μλ €μ€λ€
{}
μμͺ½μ jsλ‘ ν΄μ.
βοΈ μ£Όμλ λ§μ°¬κ°μ§μ μλ―Έλ‘
{/μ£Όμ/}
νλ©΄ μλ°μ€ν¬λ¦½νΈλ‘ ν΄μ λμ΄λ μ£Όμμ΄λ μ£ΌμμΌλ‘ μ¬μ©λλ€
App.js
function a(){
return "κ°μμ§";
}
a(); //κ°μμ§ μΆλ ₯
function Su(){
return(
<div>a()</div> //κ°μμ§ μΆλ ₯
);
}
jsx λ²μ
, d01MyComponent.js
// λλ§μ μ»΄ν¬λνΈ
function a(){
return "κ°μμ§";
}
function Su(){
// μ΄κ³³μ μ£Όμ
return (
<>
{/*μ£Όμ*/}
<h1>{a()} μ»΄ν¬λνΈ</h1>
<p className={a()}>λ΄κ° μ²μμΌλ‘ λ§λ λλ§μ xml, μ¦ λ¦¬μ‘νΈ μ»΄ν¬λνΈμ
λλ€</p>
<p>{a()}</p>
</>
);
}
export default Su;