728x90
λ°μν
π‘ μ€μ΅ ν¬μΈνΈ!
π React μμ state μ¬μ©ν΄λ³΄κΈ°
π€ state λ₯Ό λ§λ€μ΄μ λ°μ΄ν° μ μ₯ν΄λ³΄κΈ°
- React μμλ λ³μλ§κ³ λ state λΌλ κ²μ μ¬μ©νμ¬ λ°μ΄ν°λ₯Ό μ μ₯νμ¬ μ¬μ©ν μ μλ€.
- state λ₯Ό μ¬μ©νκΈ° μν΄μλ μΌλ¨ state λ₯Ό μ¬μ©ν νμΌ μλ¨μ λ€μκ³Ό κ°μ΄ μ½λλ₯Ό λ£μ΄μ£Όμ΄μΌ νλ€.
let [value, setValue] = useState(initialValue)
- κ·Έλ¦¬κ³ useState() ν¨μλ μμ κ°μ ννλ‘ μ¬μ©νλ€.
- useState() ν¨μλ state λ₯Ό νλ λ§λ€μ΄μ£Όλ ν¨μμ΄λ©°, useState() μ μκ΄νΈ μμ μ μ₯ν λ°μ΄ν°λ₯Ό λ£μΌλ©΄ state μ λ°μ΄ν°λ₯Ό μ μ₯ν μ μλ€.
- useState() ν¨μλ₯Ό μ¬μ©νλ©΄ array μ ννλ‘ [λ°μ΄ν°1, λ°μ΄ν°2] μ κ°μ΄ λ°μ΄ν°κ° λ κ°κ° λ¨λλ°, μ΄λ ꡬ쑰 λΆν΄ λ¬Έλ²μ νμ©ν΄μ μ μ₯ν ν μ¬μ©μ΄ κ°λ₯νλ€.
- value λ getter μ ν΄λΉνλ©° μ€μ μ μ₯ν λ°μ΄ν°κ° λ€μ΄μλ λ³μμ΄κ³ , setValue λ setter μ ν΄λΉνλ©° μ μ₯ν λ°μ΄ν°λ₯Ό λ³κ²½ν ν¨μκ° λ€μ΄μλ λ³μμ΄λ€.
π€ state λ°μ΄ν°λ‘ λ°μ΄ν°λ°μΈλ©νκΈ°
function App() {
let [title, setTitle] = useState([
'[React] React μ€μΉμ κ°λ°νκ²½ μ
ν
νκΈ°',
'[React] JSX λ₯Ό μ΄μ©ν΄ HTML νμ΄μ§ μ μν΄λ³΄κΈ°'
])
return (
<div className="App">
<div className="veryperi-nav">
<div>
<FontAwesomeIcon icon={faStarAndCrescent} /> Seoyun's Blog
</div>
</div>
<h2 className='intro'>λ°°μμμ κ°μΉλ₯Ό μ°Ύλ μλΉ κ°λ°μμ
λλ€</h2>
<div className='list'>
<h3>{title[0]}</h3>
<p>2022-03-18</p>
<hr/>
</div>
<div className='list'>
<h3>{title[1]}</h3>
<p>2022-03-18</p>
<hr/>
</div>
</div>
);
}
export default App;
- μμ κ°μ΄ μ½λλ₯Ό μμ±νλ©΄ title μ΄λΌλ λ³μμλ [ '[React] React μ€μΉμ κ°λ°νκ²½ μ ν νκΈ°', '[React] JSX λ₯Ό μ΄μ©ν΄ HTML νμ΄μ§ μ μν΄λ³΄κΈ°' ] λΌλ array κ° μ μ₯λλ€.
- κ·Έλ¦¬κ³ <h3>{title[0]}</h3> μ κ°μ ννλ‘ μ½λλ₯Ό μμ±νλ©΄ λ°μ΄ν°λ°μΈλ©μ΄ λμ΄, 미리보기 νλ©΄μμλ <h3>[React] React μ€μΉμ κ°λ°νκ²½ μ ν νκΈ°</h3> λΌκ³ μ½λλ₯Ό μμ±ν κ²κ³Ό λκ°μ΄ λ λλ§λλ κ²μ μ μ μλ€.
- λν, state μλ μμμλ£νλΏλ§ μλλΌ Array, Object μλ£νμΌλ‘λ λ°μ΄ν°λ€μ μ μ₯ν μ μλ€.
π€ state μ λ°μ΄ν°λ₯Ό μ μ₯ν΄μ μ¬μ©νλ μ΄μ μμ보기
- λ°μ΄ν°λ₯Ό μ μ₯νλ λ°©λ²μλ λ³μλ₯Ό μ¬μ©νλ λ°©λ²μ΄ μλ€.
- κ·Έλ λ€λ©΄ κ΅³μ΄ state μ λ°μ΄ν°λ₯Ό μ μ₯ν΄μ μ¬μ©ν νμκ° μμκΉνλ μλ¬Έμ΄ μκΈΈ μ μλ€.
- μΌλ°μ μΌλ‘ λ³μλ λ³κ²½μ΄ λ°μν΄λ μλμΌλ‘ μ¬λ λλ§μ ν΄μ£Όμ§ μλλ€.
- νμ§λ§ React μμλ state κ° μμ λλ©΄ state κ° ν¬ν¨λ λͺ¨λ HTML μ μλμΌλ‘ μ¬λ λλ§ν΄μ€λ€λ νΉμ±μ΄ μλ€.
- λ°λΌμ, λ³μκ° λ³κ²½λ λ μλμΌλ‘ κ΄λ ¨λ HTML μ μ¬λ λλ§νλλ‘ λ§λ€κ³ μΆλ€λ©΄ state μ λ°μ΄ν°λ₯Ό μ μ₯ν΄μ λ°μ΄ν°λ°μΈλ©μ νλ κ²μ΄ ν¨μ¬ μ©μ΄νλ€.
π React μμ state λ³κ²½ν΄λ³΄κΈ°
π ν°λ―Έλ / λΈλΌμ°μ μ½μμ°½μ warning λ©μμ§ μ λμ€κ² νκΈ°
- κ°νΉ μ½λλ₯Ό μμ±νλ€λ³΄λ©΄ ν°λ―Έλμ΄λ λΈλΌμ°μ μ½μμ°½μ λ Έλμ κΈμ¨λ‘ warning λ©μμ§κ° λμ€λ κ²½μ°κ° μλ€.
- μ΄λ eslint κ° μλͺ»λ μ½λ©κ΄μ΅μ κ΅μ ν΄μ£Όλ κ²μΈλ° λ³΄κ³ μΆμ§ μλ€λ©΄ λ€μκ³Ό κ°μ΄ μ½λλ₯Ό μμ±νκ³ μλ νμΌμ μ΅μλ¨μ λ€μκ³Ό κ°μ΄ μ£Όμμ μΆκ°ν΄μ£Όλ©΄ λλ€.
/* esLint-disable */
π€ title μμ μΆμ² λ²νΌ(π) λ§λ€κΈ°
<h3>{title[0]}<span>π</span> 0 </h3>
- μΌλ¨ κΈ°λ₯μ λ§λ€κΈ° μ μ μΆμ² λ²νΌκ³Ό μ«μκ° μ΄λ€ μμΌλ‘ νλ©΄μ λμ€κ² ν μ§ HTML λ‘ μμ±ν΄λ³Έλ€.
- μ μ©νλ©΄ λΈλΌμ°μ μμλ μ΄λ° μμΌλ‘ UI κ° λ³΄μ¬μ§λ€.
π€ μΆμ² λ²νΌ(π) ν΄λ¦ μ μ«μ μΉ΄μ΄νΈνκΈ°
- νμ¬ 0 μ΄λΌλ μ«μλ‘ νλμ½λ©μ ν΄λ μνμ΄λ―λ‘ μΆμ² λ²νΌμ μ무리 ν΄λ¦ν΄λ μ«μλ λ³νμ§ μλλ€.
- λ°λΌμ, state λ₯Ό μ¬μ©ν΄μ μΆμ² λ²νΌμ ν΄λ¦ν λλ§λ€ μ¬λ λλ§νμ¬ μΆμ² λ²νΌ ν΄λ¦ μλ§νΌ μ«μκ° μ¬λΌκ°λλ‘ HTML μ λ€μ μμ±ν΄μ£Όμλ€.
// useState() ν¨μ μ¬μ©
let [thumbsUp, setThumbsUp] = useState(0);
- λ¨Όμ useState() ν¨μλ₯Ό μ¬μ©νμ¬ λ³μλͺ μ μ ν ν, μ΄κΈ°κ°μ 0μΌλ‘ μ€μ ν΄μ£Όμλ€.
// JavaScript
<div onclick="μ€νν μλ°μ€ν¬λ¦½νΈ μ½λ"></div>
// React JSX
<div onClick={μ€νν ν¨μ}></div>
// onClick μμ±μ ν¨μ μμ±νλ λ°©λ²
// μλ₯Ό λ€μ΄ ν¨μμ μ΄λ¦μ΄ cntThumbsUp μ΄λΌκ³ νλ€λ©΄ μλμ κ°μ΄ 3κ°μ§ λ°©λ²μΌλ‘ μ¬μ© κ°λ₯
<div onClick={ cntThumbsUp }></div>
<div onClick={function(){μ€νν μ½λ}}></div>
<div onClick={()=>{μ€νν μ½λ}}></div>
- HTML μμλ₯Ό ν΄λ¦νμ λ μμ±νλ μ½λλ μμ κ°μ΄ JavaScript μ React JSX κ° λΉμ·νμ§λ§ μ‘°κΈ λ€λ₯΄λ€.
- onclick λμ onClick μ΄λΌκ³ μμ±ν΄μΌ νλ€.
- μλ°μ΄ν(" ") νΉμ λ°μ΄ν(' ') λμ μ€κ΄νΈ({ })λ₯Ό μ¬μ©ν΄μΌ νλ€.
- μΌλ°μ μΈ μ½λλ₯Ό μμ±νλ κ² μλλΌ ν¨μ ννλ‘ μ½λλ₯Ό μμ±ν΄μ£Όμ΄μΌ νλ€.
<h3>{title[0]}<span onClick={ ()=>{ thumbsUp + 1 } }>π</span> {thumbsUp} </h3>
- μΆμ² λ²νΌ(π)μ ν΄λ¦ν λλ§λ€ thumbsUp μ μ«μκ° 1μ© μ¦κ°ν΄μΌ νλ€.
- κ°λ¨νκ² μκ°νμ λ, thumbsUp + 1 ν΄μ£Όλ©΄ λλ€.
- κ·Έλ λ€κ³ ν΄μ μΌλ°μ μΈ λ³μλ₯Ό μ¬μ©νλ κ²μ²λΌ μμ κ°μ΄ μ½λλ₯Ό μμ±νλ©΄ μλ¬΄λ° λ°μμ΄ μλ€.
- state λ μΌλ°μ μΈ λ³μμλ λ¬λ¦¬ κ°μ λ³κ²½ν λ μ§μ λ λ³κ²½ ν¨μλ₯Ό μ¬μ©ν΄μΌ νκΈ° λλ¬Έμ΄λ€.
(λ€! λ°λ‘ κ·Έκ±°μ..κ°μ λ³κ²½ν λ μ¬μ©νλ €κ³ λ¨κ²¨λμλ setThumbsUp..)
<h3>{title[0]}<span onClick={ ()=>{ setThumbsUp(thumbsUp + 1) } }>π</span> {thumbsUp} </h3>
- setThumbsUp μ΄λΌκ³ λ§λ€μ΄ λμ λ³μκ° thumbsUp μ΄λΌλ state λ₯Ό λ³κ²½νκΈ° μν ν¨μμ ν΄λΉνλ€.
- λ°λΌμ, μμ κ°μ΄ setThumbsUp(thumbsUp + 1) λ‘ μμ±νμ¬ κΈ°μ‘΄μ thumbsUp λ°μ΄ν°λ₯Ό λ체ν λ°μ΄ν°μΈ thumbsUp + 1 λ‘ λ체ν΄μ£Όλ©΄ λλ€.
728x90
λ°μν
'[κ°λ°] Practice > React' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[React] React μμ λ°λ³΅λ¬Έ νμ©νκΈ° (0) | 2022.03.21 |
---|---|
[React] ν΄λ¦νλ©΄ λμνλ UI (λͺ¨λ¬μ°½) λ§λ€μ΄λ³΄κΈ° (0) | 2022.03.20 |
[React] React μμ state μ¬μ©ν΄λ³΄κΈ°_2 (0) | 2022.03.18 |
[React] React μμ Font Awesome μ¬μ©ν΄λ³΄κΈ° (0) | 2022.03.18 |
[React] React μ€μΉνκΈ° λ° κ°λ°νκ²½ μ ν νκΈ° (0) | 2022.03.18 |