π‘ 리μ‘νΈ κΈ°λ³Έ κ°λ
π 리μ‘νΈλ?
- 리μ‘νΈ(React)λ νμ΄μ€λΆ(νμ¬ Meta)μμ κ°λ°ν JavaScript λΌμ΄λΈλ¬λ¦¬λ‘,
- μ£Όλ‘ μ¬μ©μ μΈν°νμ΄μ€(UI)λ₯Ό ꡬμ±νλ λ° μ¬μ©λ©λλ€.
- 리μ‘νΈμ μ£Όμ νΉμ§μ μ»΄ν¬λνΈ κΈ°λ° κ°λ°μ
λλ€.
- UIλ₯Ό μ¬λ¬ κ°μ λ
립μ μΈ μ»΄ν¬λνΈλ‘ λλμ΄ μ¬μ¬μ©μ±μ λμ΄κ³ κ΄λ¦¬νκΈ° μ½κ² λ§λλλ€
π μ»΄ν¬λνΈ
- μ»΄ν¬λνΈλ UIμ κΈ°λ³Έ λ¨μμ
λλ€
- 리μ‘νΈμμ UI μμλ λͺ¨λ μ»΄ν¬λνΈλ‘ ꡬμ±λλ©°, κ° μ»΄ν¬λνΈλ ν¨μν λλ ν΄λμ€νμΌλ‘ μμ±ν μ μμ΅λλ€.
- μ΅μ 리μ‘νΈμμλ ν¨μν μ»΄ν¬λνΈκ° μ£Όλ‘ μ¬μ©λ©λλ€.
π ν¨μν μ»΄ν¬λνΈ
- ν¨μν μ»΄ν¬λνΈλ JavaScriptμ ν¨μλ‘ μμ±λ μ»΄ν¬λνΈμ
λλ€
- μ»΄ν¬λνΈ μ΄λ¦μ λλ¬Έμλ‘ μμν΄μΌ νλ©°, νμΌ μ΄λ¦λ λλ¬Έμλ‘ μμνλ κ²μ΄ μΌλ°μ μ
λλ€
(μ: MyComponent.js).
π HTML μμ±
- 리μ‘νΈμμ HTML μμ±μΌλ‘ classλ₯Ό μ¬μ©ν μ μμ΅λλ€ μ΄μ λ classκ° JavaScriptμ μμ½μ΄μ΄κΈ° λλ¬Έμ
λλ€
- λμ classNameμ μ¬μ©νμ¬ CSS ν΄λμ€λ₯Ό μ§μ ν©λλ€
<div className="my-class">Hello</div>
π Return
- 리μ‘νΈ μ»΄ν¬λνΈλ λ¨ νλμ νκ·Έ μμλ§ λ¦¬ν΄ν μ μμ΅λλ€
- μ¬λ¬ κ°μ μμλ₯Ό 리ν΄νλ €λ©΄,νλμ λΆλͺ¨ μμλ‘ κ°μΈμΌ ν©λλ€
-μλ₯Ό λ€μ΄, div λ section λ±μΌλ‘ κ°μΈμ λ°νν©λλ€
return (
<div>
<h1>Hello World</h1>
<p>Welcome to React</p>
</div>
);
π μκΈ° λ«ν νκ·Έ
- μκΈ° λ«ν νκ·Έλ λ΄μ©μ΄ μμ κ²½μ° νκ·Έκ° μ€μ€λ‘ λ«νλ ννμ΄λ©°, input / κ³Ό κ°μ νκ·Έλ μ체μ μΌλ‘ λ«νλλ€
<input type="text" />
π‘ 리μ‘νΈμ ꡬ쑰
π App.js
- App.jsλ μ ν리μΌμ΄μ
μ μμμ μ΄μ λ©μΈ μ»΄ν¬λνΈλ‘, λ€λ₯Έ μ»΄ν¬λνΈλ₯Ό importνμ¬ μ΅μ’
μ μΌλ‘ λ λλ§νλ μν μ ν©λλ€
- App.js νμΌμμλ λ€λ₯Έ μ»΄ν¬λνΈλ₯Ό μ‘°ν©νμ¬ μ 체 UIλ₯Ό ꡬμ±ν©λλ€
π index.js
- index.jsλ 리μ‘νΈ μ ν리μΌμ΄μ
μ μ
ꡬμ
λλ€
- index.jsμμ React DOMμ μ¬μ©νμ¬ μ΅μ’
μ μΌλ‘ μ»΄ν¬λνΈλ₯Ό index.htmlμ νΉμ DOM μμ (#root)μ λ λλ§ν©λλ€
ReactDOM.render(<App />, document.getElementById('root'));
π SPA (Single Page Application)
- Single Page Application(SPA)μ νλμ HTML νμ΄μ§λ‘ μ¬λ¬ νμ΄μ§μ²λΌ λμνλ λ°©μμ
λλ€
- νμ΄μ§ μ΄λ μμ΄, URLλ§ λ³κ²½λλ©° νλ©΄λ§ κ°±μ λ©λλ€
μ₯μ : νμ΄μ§ κ° μ νμ΄ λΉ λ₯΄κ³ μλ²μμ λΆνμν ν΅μ μ΄ μμ΅λλ€.
λ¨μ : μ΄κΈ° λ‘λ© μκ°μ΄ κΈΈ μ μμ΅λλ€.
π‘ λΌμ°ν
κ³Ό λ€νΈμν¬ ν΅μ
π React Router
- 리μ‘νΈμμλ νμ΄μ§ μ΄λμ κ΄λ¦¬ν λ a νκ·Έ λμ μ Link νκ·Έλ₯Ό μ¬μ©ν©λλ€.
import { Link } from 'react-router-dom';
<Link to="/about">About</Link>
- Linkλ νμ΄μ§ κ°μ λ€λΉκ²μ΄μ
μ μ²λ¦¬νλ©°, μ 체 νμ΄μ§λ₯Ό λ€μ λ‘λνμ§ μκ³ , νμν λΆλΆλ§ κ°±μ ν©λλ€
- a νκ·Έμ λ¬λ¦¬ 리μ‘νΈμμ Linkλ λ€νΈμν¬ ν΅μ μ λ°μμν€μ§ μμ΅λλ€
π λ€νΈμν¬ ν΅μ
- 리μ‘νΈμμλ νμ΄μ§λ₯Ό μ²μ λ‘λν λλ§ μλ²μ 1λ² ν΅μ μ νκ³ , μ΄νμλ AJAXλ Fetch API λ±μ μ¬μ©ν΄ λΉλκΈ°μ μΌλ‘ λ°μ΄ν°λ₯Ό μ²λ¦¬ν©λλ€
- νμ΄μ§ λ‘λ νμλ μλ²μμ ν΅μ μμ΄ νλ©΄μ λμ μΌλ‘ μ
λ°μ΄νΈν μ μμ΅λλ€
π a νκ·Έμ Link μ°¨μ΄
- a νκ·Έλ ν΄λ¦ μ μλ‘μ΄ μμ²μ΄ λ°μνκ³ νμ΄μ§κ° μλ‘κ³ μΉ¨λ©λλ€
- Linkλ ν΄λ¦ μ μλ²μμ ν΅μ μμ΄ νμ΄μ§ λ΄μ©λ§ μ
λ°μ΄νΈλλ―λ‘ λΉ λ₯Έ νμ΄μ§ μ νμ΄ κ°λ₯ν©λλ€
π‘ λΉλ λ° λ°°ν¬
π λΉλ
- κ°λ°μ΄ μλ£λλ©΄ yarn build λλ npm run build λͺ
λ Ήμ΄λ₯Ό ν΅ν΄ μ΅μ’
λΉλλ₯Ό μμ±ν©λλ€
yarn build
- λΉλ κ²°κ³Όλ¬Όμ build ν΄λμ μμ±λλ©°, μ΄ ν΄λμ μλ νμΌλ€μ λΌμ΄λΈ μλ²μμ μ€ν κ°λ₯ν©λλ€
- λΉλ ν΄λ μμ μλ μ μ νμΌλ€μ λ°°ν¬ κ°λ₯ν μ΅μ’
νμΌμ
λλ€