λͺ©μ°¨
μλ² λ°μ΄ν°μ μ»΄ν¬λνΈμ λΆλ¦¬: μ μ§λ³΄μμ±μ λμ΄λ λ°©λ²
κ°λ°μ νλ€ λ³΄λ©΄ μλ²μμ λ°μμ¨ λ°μ΄ν°λ₯Ό κ·Έλλ‘ νλ©΄μ λ λλ§νλ μ»΄ν¬λνΈλ₯Ό λ§λ€κ² λ©λλ€. κ·Έλ¬ν κ²½μ°, μλ²μμ λ°νλλ λ°μ΄ν°μ νμμ΄ λ³κ²½λλ©΄ μ»΄ν¬λνΈ μ½λμλ μν₯μ λ―ΈμΉκ² λμ΄ μ μ§λ³΄μκ° μ΄λ €μμ§λ λ¬Έμ κ° λ°μν©λλ€. μ΄λ² ν¬μ€ν μμλ μλ² λ°μ΄ν°μ μ»΄ν¬λνΈλ₯Ό λΆλ¦¬νμ¬ κ°κ°μ μ± μμ λͺ νν νκ³ , λ³ννλ νκ²½μμλ μμ μ μΌλ‘ μ»΄ν¬λνΈλ₯Ό κ΄λ¦¬ν μ μλ λ°©λ²μ λν΄ μμΈν μμλ³΄κ² μ΅λλ€.
λ¬Έμ μ μΆλ°μ : μλ² λ°μ΄ν°μ μ»΄ν¬λνΈμ κ°ν κ²°ν©
λλΆλΆμ μΉ μ ν리μΌμ΄μ μ μλ²μμ λ°μ΄ν°λ₯Ό λ°μ μ΄λ₯Ό νλ©΄μ νμνλ κ΅¬μ‘°λ‘ μ΄λ£¨μ΄μ Έ μμ΅λλ€. κ°λ° μ΄κΈ°μλ μλ²μμ μ 곡νλ λ°μ΄ν° νμμ λ§μΆ° μ»΄ν¬λνΈλ₯Ό μ μνλ κ²μ΄ μμ°μ€λ¬μ 보μ λλ€. μλ₯Ό λ€μ΄, μλμ κ°μ΄ μλ²μμ λ°νλ λ°μ΄ν°λ₯Ό κ·Έλλ‘ μ»΄ν¬λνΈμ props νμ μΌλ‘ μ¬μ©νλ κ²½μ°λ₯Ό μκ°ν΄ λ΄ μλ€.
interface BeforeStudent {
name: string;
age: number;
school: string;
friendNumber: number;
howToGetToSchool: string;
}
const Page = () => {
// μλ²μμ λ°μ΄ν°λ₯Ό λ°μμ€λ ν¨μ
const studentData: BeforeStudent = getStudent();
return <StudentComponent data={studentData} />;
};
interface StudentComponentProps {
data: BeforeStudent;
}
const StudentComponent = ({ data }: StudentComponentProps) => {
return (
<div>
<div>{`μ΄λ¦μ ${data.name} μ
λλ€.`}</div>
<div>{`λμ΄λ ${data.age} μ
λλ€.`}</div>
<div>{`μΉν μΉκ΅¬μ μλ ${data.friendNumber} μ
λλ€.`}</div>
</div>
);
};
export default StudentComponent;
μ΄μ²λΌ μ»΄ν¬λνΈ λ΄λΆμμ μλ²μμ λ°μμ¨ λ°μ΄ν° μ 체λ₯Ό κ·Έλλ‘ μ¬μ©νκ² λλ©΄, μλ²μ λ°μ΄ν° κ΅¬μ‘°κ° μ‘°κΈμ΄λΌλ λ³κ²½λ κ²½μ° μ»΄ν¬λνΈ μ½λλ₯Ό ν¨κ» μμ ν΄μΌ νλ λ¬Έμ κ° λ°μν©λλ€. μλ₯Ό λ€μ΄, μλ²μμ λ°ννλ λ°μ΄ν° νμμ΄ μλμ κ°μ΄ λ³κ²½λλ€λ©΄ μ΄λ¨κΉμ?
interface AfterStudent {
person: {
name: string;
age: number;
school: string;
};
friendNumber: number;
howToGetToSchool: string;
}
κΈ°μ‘΄μ StudentComponent
λ μ¬μ ν BeforeStudent
νμ
μ λ°μ΄ν°λ₯Ό μ¬μ©νλλ‘ μμ±λμ΄ μκΈ° λλ¬Έμ, λ°μ΄ν° κ΅¬μ‘°κ° λ³κ²½λ¨μ λ°λΌ μ»΄ν¬λνΈ λ΄λΆμ μ κ·Ό λ°©μ λν ν¨κ» μμ λμ΄μΌ ν©λλ€. μ¦, λ¨μν μλ²μ λ°μ΄ν° λ³κ²½μ λ§μΆκΈ° μν΄ μ»΄ν¬λνΈ μ½λκΉμ§ λ³κ²½νκ² λλ μν©μ΄ λ°μν©λλ€.
λ¬Έμ μ λ³Έμ§: λ¨μΌ μ± μ μμΉ(SRP) μλ°
μ»΄ν¬λνΈκ° λ³Έμ°μ μν μ UIλ₯Ό λ λλ§νλ κ²μ λλ€. κ·Έλ¬λ μμ μμμ²λΌ μλ²μμ λ°μμ¨ λ°μ΄ν° μ 체λ₯Ό μ»΄ν¬λνΈκ° μ§μ μ²λ¦¬νκ² λλ©΄, μ»΄ν¬λνΈλ λ°μ΄ν°μ ꡬ쑰μ λ λλ§μ΄λΌλ λ κ°μ§ μν μ λμμ κ°μ§κ² λ©λλ€. μ΄λ κ°μ²΄μ§ν₯ μ€κ³μ λ¨μΌ μ± μ μμΉ(Single Responsibility Principle, SRP)μ μλ°°λλ λ¬Έμ μ μ λλ€.
λ¨μΌ μ± μ μμΉμ λ°λ₯΄λ©΄, νλμ λͺ¨λμ΄λ μ»΄ν¬λνΈλ νλμ μν λ§ μνν΄μΌ ν©λλ€. μ¦, λ°μ΄ν°μ κ°κ³΅κ³Ό λ λλ§μ μλ‘ λ€λ₯Έ κ΄μ¬μ¬λ‘ λΆλ¦¬λμ΄μΌ νλ©°, νμͺ½μ΄ λ³κ²½λμ΄λ λ€λ₯Έ μͺ½μλ μν₯μ μ£Όμ§ μμμΌ ν©λλ€. μλ² λ°μ΄ν°κ° λ³κ²½λλλΌλ UIλ₯Ό λ λλ§νλ λ‘μ§μ κ·Έλλ‘ μ μ§λ μ μλλ‘, λ°μ΄ν° κ°κ³΅κ³Ό UI λ λλ§μ λͺ νν λΆλ¦¬νλ κ²μ΄ μ μ§λ³΄μμ± μΈ‘λ©΄μμ λ§€μ° μ€μν©λλ€.
ν΄κ²°μ± : μ»΄ν¬λνΈ λ΄λΆ λ°μ΄ν° νμ μ μνκΈ°
λ¬Έμ λ₯Ό ν΄κ²°νλ κ°μ₯ ν¨κ³Όμ μΈ λ°©λ²μ μ»΄ν¬λνΈκ° μ€μ λ‘ νμν λ°μ΄ν°λ§μ λ³λμ νμ μΌλ‘ μ μνκ³ , μλ²μμ λ°μμ¨ λ°μ΄ν°λ₯Ό ν΄λΉ νμ μ λ§κ² κ°κ³΅νλ κ²μ λλ€. μ΄λ κ² νλ©΄ μλ²μ λ°μ΄ν° κ΅¬μ‘°κ° λ³κ²½λλλΌλ μ»΄ν¬λνΈ λ΄λΆμμλ μ€μ§ νμν λ°μ΄ν°λ§μ μ¬μ©νκ² λμ΄, μ»΄ν¬λνΈ μ½λ μμ μ λΆλ΄μ ν¬κ² μ€μΌ μ μμ΅λλ€.
μλλ μ΄λ₯Ό μ μ©ν μμ μ½λμ λλ€.
// μ»΄ν¬λνΈμμ μ€μ λ‘ νμν λ°μ΄ν°λ§μ λͺ
μν νμ
interface StudentComponentData {
name: string;
age: number;
friendNumber: number;
}
interface AfterStudent {
person: {
name: string;
age: number;
school: string;
};
friendNumber: number;
howToGetToSchool: string;
}
const Page = () => {
// μλ²μμ λ°μ΄ν°λ₯Ό λ°μμ€λ ν¨μ
const studentData: AfterStudent = getStudent();
// μλ² λ°μ΄ν°μμ μ»΄ν¬λνΈμ νμν λ°μ΄ν°λ§ μΆμΆ
const data: StudentComponentData = {
name: studentData.person.name,
age: studentData.person.age,
friendNumber: studentData.friendNumber,
};
return <StudentComponent data={data} />;
};
interface StudentComponentProps {
data: StudentComponentData;
}
const StudentComponent = ({ data }: StudentComponentProps) => {
return (
<div>
<div>{`μ΄λ¦μ ${data.name} μ
λλ€.`}</div>
<div>{`λμ΄λ ${data.age} μ
λλ€.`}</div>
<div>{`μΉν μΉκ΅¬μ μλ ${data.friendNumber} μ
λλ€.`}</div>
</div>
);
};
export default StudentComponent;
μμ μ½λμμλ μ»΄ν¬λνΈμμ νμν λ°μ΄ν°λ§ λ³λλ‘ μ μνκ³ , μλ²μμ λ°μμ¨ λ°μ΄ν°λ₯Ό ν΄λΉ νμ
μ λ§κ² λ³νν©λλ€. μ΄λ κ² λΆλ¦¬νκ² λλ©΄, μλ² λ°μ΄ν°μ κ΅¬μ‘°κ° λ³κ²½λλλΌλ λ³ν λ‘μ§(μ¬κΈ°μλ Page
μ»΄ν¬λνΈ λ΄λΆ)λ§ μμ νλ©΄ λλ©°, μ€μ λ‘ UIλ₯Ό λ λλ§νλ StudentComponent
μ μ½λλ κ·Έλλ‘ μ μ§ν μ μμ΅λλ€.
λΆλ¦¬μ μ₯μ : μ μ§λ³΄μμ±κ³Ό νμ₯μ±μ ν₯μ
μλ² λ°μ΄ν°μ μ»΄ν¬λνΈλ₯Ό λΆλ¦¬ν¨μΌλ‘μ¨ μ»μ μ μλ κ°μ₯ ν° μ΄μ μ λ°λ‘ μ μ§λ³΄μμ±μ λλ€. ꡬ체μ μΌλ‘ μ΄ν΄λ³΄λ©΄ λ€μκ³Ό κ°μ μ₯μ μ΄ μμ΅λλ€.
- λ¨μΌ μ±
μ μμΉ μ€μ
μ»΄ν¬λνΈλ λ¨μ§ λ°μ΄ν°λ₯Ό λ λλ§νλ μν λ§ μννκ³ , λ°μ΄ν°μ κ°κ³΅μ λ³λμ λ‘μ§μ΄λ μμ μ»΄ν¬λνΈμμ λ΄λΉνκ² λ©λλ€. μ΄λ‘ μΈν΄ μ½λμ κ° λΆλΆμ΄ λͺ νν μ± μμ κ°μ§κ² λμ΄, μ΄λ ν λΆλΆμ΄ λ³κ²½λλλΌλ λ€λ₯Έ λΆλΆμ λ―ΈμΉλ μν₯μ μ΅μνν μ μμ΅λλ€. - μ½λ λ³κ²½ μ΅μν
μλ²μ λ°μ΄ν° κ΅¬μ‘°κ° λ³κ²½λλλΌλ, UI μ»΄ν¬λνΈλ μ λ¬λ°μ λ°μ΄ν°λ§μ λ λλ§νλ―λ‘ ν΄λΉ μ»΄ν¬λνΈμ λ΄λΆ μ½λλ₯Ό μμ ν νμκ° μμ΅λλ€. λμ , μλ² λ°μ΄ν°μ μ»΄ν¬λνΈ λ°μ΄ν° κ°μ λ³ν λ‘μ§λ§ μμ νλ©΄ λμ΄, μ½λ λ³κ²½ λ²μκ° μ€μ΄λλλ€. - ν
μ€νΈ λ° λλ²κΉ
μ©μ΄
μ»΄ν¬λνΈμ μν μ΄ λͺ ννκ² λΆλ¦¬λλ©΄, κ° μ»΄ν¬λνΈλ₯Ό λ 립μ μΌλ‘ ν μ€νΈνκΈ° μ¬μμ§λλ€. λ°μ΄ν° κ°κ³΅ λ‘μ§κ³Ό UI λ λλ§ λ‘μ§μ΄ λΆλ¦¬λμ΄ μμΌλ©΄, λ¬Έμ λ°μ μ μ΄λ λΆλΆμμ μ€λ₯κ° λ°μνλμ§λ₯Ό μ μνκ² νμ ν μ μμ΅λλ€. - μ¬μ¬μ©μ± μ¦κ°
μ»΄ν¬λνΈκ° νΉμ λ°μ΄ν° νμμ μμ‘΄νμ§ μκ³ , μ λ¬λ°μ λ°μ΄ν°λ§μ λ λλ§νλ ꡬ쑰λΌλ©΄, λμΌν UI μ»΄ν¬λνΈλ₯Ό λ€μν λ°μ΄ν° μμ€μ μ¬μ¬μ©νκΈ°κ° μμν΄μ§λλ€. μ΄λ κ°λ° κ³Όμ μμ μ½λ μ€λ³΅μ μ€μ΄κ³ , λ³΄λ€ λͺ¨λνλ ꡬ쑰λ₯Ό λ§λ€ μ μλλ‘ λμμ€λλ€.
μ€μ κ°λ° νκ²½μμμ κ³ λ €μ¬ν
λ¬Όλ‘ , λͺ¨λ μν©μμ μλ² λ°μ΄ν°μ μ»΄ν¬λνΈλ₯Ό μλ²½νκ² λΆλ¦¬νλ κ²μ΄ νμ κ°λ¨νμ§λ§μ μμ΅λλ€. μ€μ νλ‘μ νΈμμλ λ€μκ³Ό κ°μ μ¬νλ€μ κ³ λ €ν΄μΌ ν©λλ€.
- λ°μ΄ν° λ³ν λΉμ©
μλ² λ°μ΄ν°λ₯Ό μ»΄ν¬λνΈμ λ§κ² λ³ννλ λ‘μ§μ μΆκ°νκ² λλ©΄, λ°μ΄ν° κ°κ³΅μ μΆκ°μ μΈ μ½λκ° νμν΄μ§λλ€. μ΄λ‘ μΈν΄ μ½λκ° λ€μ 볡μ‘ν΄μ§ μ μμΌλ, μ μ§λ³΄μμ±μ λμ΄λ μ₯κΈ°μ μΈ μ΄μ μ κ³ λ €νλ©΄ μΆ©λΆν κ°μν μ μλ λΆλΆμ λλ€. - νμ
μ€ν¬λ¦½νΈμ νμ©
νμ μ€ν¬λ¦½νΈλ₯Ό μ¬μ©νλ©΄, μ»΄ν¬λνΈμμ νμν λ°μ΄ν° νμ κ³Ό μλ²μμ λ°μμ¨ λ°μ΄ν° νμ μ λͺ ννκ² μ μν μ μμ΅λλ€. μ΄λ₯Ό ν΅ν΄ μ»΄νμΌ μμ μμ νμ μλ¬λ₯Ό μ¬μ μ λ°©μ§ν μ μμΌλ©°, μ½λμ μμ μ±μ λμΌ μ μμ΅λλ€. - νμ
λ° μ½λ 리뷰
μ¬λ¬ κ°λ°μκ° ν¨κ» μμ νλ νκ²½μμλ λ°μ΄ν°μ μΆμ²μ λ³ν λ‘μ§μ λν λͺ νν λ¬Έμνκ° νμν©λλ€. μλ² λ°μ΄ν°μ μ»΄ν¬λνΈ λ°μ΄ν°μ λΆλ¦¬ λ°©μμ ν μ μ²΄κ° μ΄ν΄νκ³ μΌκ΄μ± μκ² μ μ©ν΄μΌ, μ₯κΈ°μ μΈ νλ‘μ νΈ μ μ§λ³΄μμ ν° λμμ΄ λ©λλ€.
κ²°λ‘ : μ»΄ν¬λνΈμ μν μ μ§μ€νλΌ
μλ² λ°μ΄ν°μ μ»΄ν¬λνΈλ₯Ό λΆλ¦¬νλ κ²μ λ¨μν μ½λλ₯Ό λλλ λ¬Έμ κ° μλλΌ, μννΈμ¨μ΄ μ€κ³μ κ·Όλ³Έ μμΉμΈ λ¨μΌ μ± μ μμΉμ μ€μνλ μ€μν λ°©λ²μ λλ€. μ»΄ν¬λνΈλ λ³Έλ UIλ₯Ό λ λλ§νλ μν μ μ§μ€ν΄μΌ νλ©°, λ°μ΄ν°μ κ°κ³΅μ΄λ ꡬ쑰 λ³κ²½μ λ°λ₯Έ μν₯μ μ΅μνν΄μΌ ν©λλ€.
μ€μ λ‘ μλ² λ°μ΄ν° νμμ΄ λ³κ²½λλλΌλ, μ»΄ν¬λνΈ λ΄λΆ μ½λλ₯Ό μμ ν νμκ° μλλ‘ μμ μ»΄ν¬λνΈλ λ³λμ λ°μ΄ν° λ³ν λ‘μ§μμ μ΄λ₯Ό μ²λ¦¬νλ©΄, μ μ§λ³΄μμ±κ³Ό νμ₯μ±μ ν¬κ² ν₯μμν¬ μ μμ΅λλ€. μ΄λ λ¨μν μ½λ λ³κ²½μ νΈμμ±λΏ μλλΌ, μ₯κΈ°μ μΈ νλ‘μ νΈ κ΄λ¦¬ μΈ‘λ©΄μμλ ν° μ₯μ μ μ 곡ν©λλ€.
κ°λ°μλ‘μ μ΄λ¬ν λΆλ¦¬ μμΉμ μ μ΄ν΄νκ³ μ μ©νλ€λ©΄, λ―Έλμ λ°μν μ μλ λ€μν λ³κ²½ μ¬νμλ μ μ°νκ² λμ²ν μ μλ κ²¬κ³ ν μ ν리μΌμ΄μ μ ꡬμΆν μ μμ κ²μ λλ€.
λ§λ¬΄λ¦¬νλ©°
μ΄λ² ν¬μ€ν
μμλ μλ²μμ λ°μμ¨ λ°μ΄ν°μ μ»΄ν¬λνΈ κ°μ κ°ν κ²°ν©μ΄ μ΄λ»κ² μ μ§λ³΄μμ±μ μ
μν₯μ λ―ΈμΉλμ§, κ·Έλ¦¬κ³ μ΄λ₯Ό ν΄κ²°νκΈ° μν΄ μ»΄ν¬λνΈ λ΄λΆμμ νμν λ°μ΄ν° νμ
λ§μ μ μνλ λ°©λ²μ λν΄ μ΄ν΄λ³΄μμ΅λλ€.
λΆλ¦¬λ ꡬ쑰 λλΆμ UI μ»΄ν¬λνΈλ μ€μ§ λ λλ§μλ§ μ§μ€ν μ μμΌλ©°, μλ² λ°μ΄ν° νμμ΄ λ³κ²½λλλΌλ μμ μ μΌλ‘ μλν μ μκ² λ©λλ€. μ΄λ¬ν μ€κ³ λ°©μμ λ¨μΌ μ±
μ μμΉμ λΆν©νλ©°, κ°λ°μμ μμ°μ±μ λμ΄κ³ μ½λμ μ¬μ¬μ©μ±μ μ¦λμν€λ ν¨κ³Όμ μΈ λ°©λ²μ
λλ€.
κ°λ° μ΄κΈ°μλ μλ² λ°μ΄ν°μ μ»΄ν¬λνΈλ₯Ό νλλ‘ λ¬Άμ΄ λΉ λ₯΄κ² κ²°κ³Όλ¬Όμ λ΄λ κ²μ΄ μ λ¦¬ν΄ λ³΄μΌ μ μμΌλ, νλ‘μ νΈκ° νμ₯λκ³ λ³΅μ‘ν΄μ§μλ‘ μ΄λ¬ν κ²°ν©μ μ€νλ € λΆλ΄μΌλ‘ μμ©νκ² λ©λλ€. λ°λΌμ, μ₯κΈ°μ μΈ κ΄μ μμ μ½λμ μ μ§λ³΄μμ±κ³Ό νμ₯μ±μ κ³ λ €ν μ€κ³ λ°©μμ μ±ννλ κ²μ΄ λ§€μ° μ€μν©λλ€.
μμΌλ‘λ κ°λ° κ³Όμ μμ λ°μ΄ν°μ UIμ μ± μ λΆλ¦¬λ₯Ό λͺ νν νμ¬, λ³΄λ€ μμ μ μ΄κ³ κ΄λ¦¬νκΈ° μ¬μ΄ μ ν리μΌμ΄μ μ λ§λλ λ° λμμ΄ λμκΈΈ λ°λλλ€.
λκΈ