π ν΄λ¦°μ½λλ₯Ό μμνκ² λ μ΄μ
μ΄μ μ ν¬μ€ν
νλ LightHouse μ¬μ© μ΄ν μ½λ κ°μ λ νμνλ€κ³ λκΌμ΅λλ€.
νλΆμμ λΆν° 'ν΄λ¦°μ½λ' λΌλ λ§μ μ΄κΉ¨ λλ¨Έ λ§μ΄ λ€μμλλ°μ.
μ μ μ£Όμ΄μ§ κ³Όμ λ° νλ‘μ νΈ κ΅¬νμλ§ κΈκΈνλ λλ¨Έμ§ μ°Ύμλ³΄λ €κ³ λ
Έλ ₯νμ§ μμλ κ² κ°μ΅λλ€.
κ·Έλ¬λ€
https://youtu.be/edWbHp_k_9Y
[SLASH 21] μ€λ¬΄μμ λ°λ‘μ°λ Frontend Clean Code : Toss μ§μ λ¦Ό κ°λ°μ
μ§μ λ¦Ό κ°λ°μλμ μ ν¬λΈ μμμ λ³΄κ³ μ μ΄μ ν΄λ¦°μ½λ μ체λ₯Ό μ λͺ» μ΄ν΄νκ³ μμλ€λκ±Έ μκ² λμμ΅λλ€.
ν΄λ¦°μ½λλ?
μλ§ μ μ²λΌ ν΄λ¦°μ½λκ° κ·Έμ μ§§κ³ λ μΈλ² λ°λ³΅λμ§ μλ ν¨μν μ½λ μ λλ‘λ§ μ΄ν΄νκ³ κ³μ μ μ
λΆλ€μ΄ λ§μ κ² κ°μ΅λλ€. μ λν λΉμ₯ μ΅κ·ΌκΉμ§λ μ νν λͺ°λμκ±°λ μγ
γ
.
μ μμμ λ΄μ©μ κ°λ΅νκ² ννν΄λ³΄λ©΄
ν΄λ¦°μ½λκ° κ°μ§ μμλ μ μ§λ³΄μ μκ°μ λ¨μΆ μ΄λΌκ³ λ³Ό μ μλ€κ³ ν©λλ€.
ν΄λ¦°μ½λκ° μ μ©λμ§ μμ μ½λλ μ£Όλ‘ 1. νλ¦νμ
μ΄ μ΄λ ΅κ³ 2. λλ©μΈ λ§₯λ½ νμ
μ΄ μλλ©° 3. λλ£μκ² λ¬Όμ΄λ΄μΌλ§ μ μ μλ μ½λ μ
λλ€.
λ°λΌμ ν΄λ¦°μ½λλ λκ° λ³΄λλΌλ λΆκ° μ€λͺ
μμ΄ λμμ μ΄ν΄ν μ μμ΄μΌ ν©λλ€.
κ°λ Ή μ½λμ κΈΈμ΄κ° λ κΈΈμ΄μ§λλΌλ λ§μ΄μ§μ!
μ΄ν μμμμλ μνλ λ‘μ§μ λΉ λ₯΄κ² μ°ΎκΈ° μν λͺ κ°μ§ κ°λ
λ€μ μ§μ΄μ€λλ€.
1. μμ§λ 2. λ¨μΌ μ±
μ 3. μΆμν μ
λλ€.
μ λ μ΄ μ€μμ λ¨Όμ 'μμ§λ' μ λν΄ μ΄μΌκΈ° ν΄λ³΄κ² μ΅λλ€.
μμ§λλ?
"νλμ λͺ©μ μ κ°μ§ μ½λλ€μ μ΅λν λμ³μ Έ μμ΄μΌ νλ€."
μ½λ λΈλ‘μμ μλ‘ λΉμ·ν μν μ νλ μ½λλ₯Ό κ°κΉμ΄ λΆμ΄λ©΄ ν΄λΉ λ‘μ§μ νμ
νκΈ° μν μ½λμ κ·λͺ¨κ° λμ λ€μ΄μ€κ³ μ μ§λ³΄μνκΈ° μ¬μμ§λλ€.
λ μ½λμ νμμ μΈ ν΅μ¬ λΆλΆκ³Ό μΈλΆμ μΈ λΆλΆμ λλμ΄ μΈλΆμ μΈ λΆλΆμ νμνλ€λ©΄ μ°Ύμλ³Ό μ μκ² μ¨κΈ΄λ€λ©΄ μ½λμ κ°λ
μ±μ λμ± λμμ΄ λ©λλ€.
* νΉμ μ½λ λΈλ‘μ μ¨κΉμΌλ‘μ¨ μ½λλ₯Ό μ΄ν΄νλλ° λ°©ν΄κ° λλ€λ©΄ κ·Έκ²μ ν΅μ¬ λΆλΆμ΄λΌκ³ 보μμΌ ν©λλ€.
μ λ μ΄λ₯Ό μ κ°μΈ ν¬νΈν΄λ¦¬μ€ μ½λμ μ μ©ν΄ 보μλλ°μ.
ν΄λ¦μ Modal μ€ν
ν΄λΉ νλ©΄μ Cardλ₯Ό ν΄λ¦νλ©΄ Modalμ΄ μ€νλκ² λλ ꡬ쑰μ
λλ€.
μ λ ν΄λΉ λ‘μ§μ ꡬννλ μ½λλ₯Ό μλμ κ°μ΄ μμ±ν΄λ³΄μλλ°μ.
const { modalShow, toggle } = useModalHook();
return (
<>
<Modal
modalShow={modalShow}
toggle={toggle}
></Modal>
<CardContainer onClick={toggle}>
</>
)
μ λ§ κ°λ¨νκ² Modalμ On/Off νλ ν¨μμ On/Off μνλ₯Ό κ°μ§ λ³μλ§ μ»€μ€ν
ν
μ ν΅ν΄ μ¨κ²Όμ΅λλ€.
λ λ§μ κΈ°λ₯μ΄ νμν κ²½μ°μλ ν΄λΉ λ‘μ§μ ν° ν΅μ¬μ΄ μλλΌλ©΄ μ¨κΈΈ μ μμ κ² κ°μ΅λλ€.
import { useState } from "react";
const useModalHook = () => {
const [modalShow, setModalShow] = useState<boolean>(false);
const toggle = () => {
setModalShow(!modalShow);
};
return {
modalShow,
toggle,
};
};
export default useModalHook;
μ΄λ κ² μ»€μ€ν
ν
μ μ΄μ©ν΄ modalShow μ toggle μ μΈλΆ μ½λλ₯Ό λͺ¨λ₯΄λλΌλ μΆ©λΆν λͺ¨λ¬μ μνλ₯Ό μ μ₯νλ κ²κ³Ό κ·Έ μνλ₯Ό λ³κ²½νλ ν¨μ λΌλ κ²μ μΈμ§ν μ μμ΅λλ€.
μ΄λ¬ν λ°©μμ μ μΈν νλ‘κ·Έλλ°μ΄λΌκ³ λ ν©λλ€. μ΄μ λ°λλ‘λ λͺ
λ Ήν νλ‘κ·Έλλ°μ΄ μμ΅λλ€.
λ§μ§λ§μΌλ‘ μμ κΈ°μ ν λ΄μ©μ²λΌ μ μΈν νλ‘κ·Έλλ°μ μ½λμ κ°λ
μ±κ³Ό μ μ§λ³΄μ λ° μ¬μ¬μ©μ±μ μ©μ΄νλ€λ μ μ΄ μ₯μ μ΄ μμ§λ§ λ°λλ‘ λ‘μ§μ λ³κ²½νκΈ° μν΄μ μ¬λ¬ λ 벨μ μ€κ°λ©° μμ ν΄μΌ ν μλ μμ΅λλ€.
λ°λΌμ νμ¬μ μν©μ λ§κ² μ λμ μΌλ‘ μ¬μ©νλ κ²μ΄ μ’λ€κ³ ν©λλ€.