728x90
λ°μν
π‘ μ€μ΅ ν¬μΈνΈ!
- μ΄λ²μλ useEffect() μ setTimeout() μ μ¬μ©νμ¬ 2μ΄λμλ§ λ³΄μ¬μ§λ μλ¦Όμ°½μ λ§λ€μ΄λ³΄μλ€.
- μ΄μ μ λΆνΈμΊ νλ₯Ό μκ°ν λμλ useEffect λ Hook μ΄λ λ§μ΄ λ€μ΄λ λ΄€λλ° μ λλ‘ λ μ€λͺ μ΄ μμ΄μ, μ΄ν΄λ νμ§ λͺ»ν μνμμ λ€μ μ§λλ‘ λμ΄κ°λλΌ μ°μ°νμλλ° μ΄λ² κΈ°νλ₯Ό ν΅ν΄ κ°λ μ μκ³ νμ€νκ² μ΄λ€ λμ μ¬μ©ν΄μΌ νλμ§λ₯Ό μκ² λμλ€.
π μλ¦Όμ°½ νμ΄λ¨Έ κΈ°λ₯ λ§λ€κΈ°
// μ 체 μ½λ 미리보기
// μ 체 μ½λ λ΄μ©μ΄ κΈΈμ΄μ λΆνμν λΆλΆμ μ μΈνλ€.
function Detail(props) {
let [alert, setAlert] = useState(true);
useEffect(()=>{
let timer = setTimeout(()=>{setAlert(false)}, 2000);
return ()=>{ clearTimeout(timer) };
},[alert]);
return (
<div className="container">
{
alert == true
? (<div className='my-alert-gold'>
<p>
μ¬κ³ κ° μΌλ§ λ¨μ§ μμμ΅λλ€. ꡬ맀λ₯Ό μλλ₯΄μΈμ!
</p>
</div>)
: null
}
</div>
)
}
- useEffect() λ₯Ό νμ©νμ¬ μλ¦Όμ°½μ΄ 2μ΄ νμ μ¬λΌμ§λ κΈ°λ₯μ λ§λ€μ΄λ³΄μλ€.
π€ μλ¦Όμ°½ UI μνλ₯Ό μ μ₯ν state λ§λ€κΈ°
let [alert, setAlert] = useState(true);
- λ¨Όμ , alert λΌλ state λ₯Ό λ§λ€μ΄μ μλ¦Όμ°½ UI κ° λ³΄μ΄κ±°λ 보μ΄μ§ μλ μνλ₯Ό state μ true / false λ‘ μ μ₯ν΄μ€λ€.
- λλ 보μ΄λ μνλ₯Ό true λ‘ μ νλ€.
π€ μλ¦Όμ°½ UI μνμ λ°λΌ μ€νν μ½λ μμ±νκΈ°
{
alert == true
? (<div className='my-alert-gold'>
<p>
μ¬κ³ κ° μΌλ§ λ¨μ§ μμμ΅λλ€. ꡬ맀λ₯Ό μλλ₯΄μΈμ!
</p>
</div>)
: null
}
- state λ₯Ό λ§λ€κ³ λ νμλ μΌν μ°μ°μλ₯Ό μ¬μ©νμ¬ alert λΌλ state κ° true μΌ λ my-alert-gold λΌλ class λ₯Ό 보μ¬μ£Όκ³ , false μΌ λμλ null μνκ° λλλ‘ ν΄μ£Όμλ€.
π€ μλ¦Όμ°½ UI μ νμ΄λ¨Έ κΈ°λ₯ μΆκ°νκΈ°
useEffect(()=>{
let timer = setTimeout(()=>{setAlert(false)}, 2000);
});
- μ΄μ useEffect() λ₯Ό μ¬μ©νμ¬ Detail Component κ° μμ±λλ©΄, μμ±λκ³ λμ 2μ΄ νμ alert λΌλ state κ° setAlert() ν¨μμ μν΄ false λ‘ λ³κ²½λμ΄ νλ©΄μμ μ¬λΌμ§λλ‘ ν΄μ£Όμλ€.
- μ¬κΈ°κΉμ§ μ½λλ₯Ό μμ±νλ©΄ ν κ°μ§ λ¬Έμ κ° μλ€.
- μλ useEffect() λ Component κ° μμ±λ λλ μ€νλμ§λ§, Component κ° update λ λλ μ€νλκΈ° λλ¬Έμ μνμ§ μμ λ μ½λκ° μ€νλλ κ²½μ°κ° μκΈΈ μ μλ€.
π€ alert λΌλ state κ° update λ λμλ§ νμ΄λ¨Έ κΈ°λ₯ μλνλλ‘ λ§λ€κΈ°
useEffect(()=>{
let timer = setTimeout(()=>{setAlert(false)}, 2000);
},[alert]);
- λ°λΌμ μμ κ°μ΄ alert λΌλ state μΈ λ€λ₯Έ μμκ° update λλ κ²½μ° useEffect() λ₯Ό μ€ννμ§ μλλ‘ μ½λλ₯Ό μμ ν΄μ£Όμλ€.
- useEffect() ν¨μ 맨 λμ μλ λκ΄νΈμλ state λ₯Ό λ£μ μ μλλ°, μ¬κΈ°μ λ€μ΄κ° state κ° λ³κ²½λ λλ§ update λ‘ μΈμνλ€.
- μ΄λ μΌμ’ μ μ€ν쑰건μ΄λ©°, λκ΄νΈμ μ무 κ²λ μμ±νμ§ μμΌλ©΄ μ‘°κ±΄μ΄ μλ κ²μ΄λ―λ‘ Component κ° update λ λ μ λ μ€νλμ§ μλλ€.
π€ λ²κ·Έ λ°©μ§λ₯Ό μν΄ μ¬μ©ν νμ΄λ¨Έμ νμ΄λ¨Έ κΈ°λ₯ ν΄μ νκΈ°
useEffect(()=>{
let timer = setTimeout(()=>{setAlert(false)}, 2000);
return ()=>{ clearTimeout(timer) };
},[alert]);
- setTimeout() ν¨μλ‘ νμ΄λ¨Έ κΈ°λ₯μ μ¬μ©νλ€λ©΄ μνμ§ μλ λ²κ·Έλ₯Ό λ°©μ§νκΈ° μν΄ νμ΄λ¨Έ κΈ°λ₯μ ν΄μ ν΄μ£Όλ κ²μ΄ μ’λ€.
- useEffect() μμ return κ³Ό ν¨μλ₯Ό μΆκ°νλ©΄ Component κ° μ¬λΌμ§ λ νΉμ μ½λλ₯Ό μ€ννλ κ²μ΄ κ°λ₯νλ€.
- λ°λΌμ return () => { clearTimeout(timer) } λΌκ³ μ½λλ₯Ό μΆκ°ν΄μ£Όμλ€.
- cleartTimeout() μ΄ νμ΄λ¨Έ κΈ°λ₯μ ν΄μ νλ ν¨μμ΄κ³ μκ΄νΈ μμλ νμ΄λ¨Έ μ΄λ¦μ μ μ΄μ£Όλ©΄ λλ€.
728x90
λ°μν
'[κ°λ°] Practice > React' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[React] React μμ Ajax μμ²νκΈ°_2 (1) | 2022.03.26 |
---|---|
[React] React μμ Ajax μμ²νκΈ° (0) | 2022.03.26 |
[React] useEffect μ¬μ©ν΄λ³΄κΈ° (0) | 2022.03.25 |
[React] CSS λμ SASS μ¬μ©ν΄λ³΄κΈ° (0) | 2022.03.25 |
[React] styled-components λ‘ CSS μ€νμΌλ§νκΈ° (0) | 2022.03.25 |