-
Notifications
You must be signed in to change notification settings - Fork 3
Compound Component Pattern
JDesignSystemμ 볡μ‘ν μ¬μ©μ μΈν°νμ΄μ€λ₯Ό μν λμ μμ€μ μΆμνλ₯Ό μ 곡νλ Compound Component ν¨ν΄μ μ±ννμμ΅λλ€.
λ§μ λμμΈμμ€ν λ€μ΄ κ·Έλ€λ§μ μ½λ μΈν°νμ΄μ€ 컨μ μ 보μ νκ³ μμ΅λλ€. JDesignSystem μμ μ΄λ¬ν μ μ κ³ λ €νμ¬, μ°λ¦¬λ§μ μ»΄ν¬λνΈ μΈν°νμ΄μ€μ 컨μ μ μ±νν΄ ν΄λΉ 컨μ μ κΈ°λ°μΌλ‘ μ¬λ¬ μ»΄ν¬λνΈλ€μ μμ±ν΄ λκ°μ΅λλ€.
μ°μ λ€λ₯Έ λμμΈμμ€ν λ€μ λ€μν Button μ»΄ν¬λνΈμ μΈν°νμ΄μ€ μμλ₯Ό μ΄ν΄λ³΄κ² μ΅λλ€:
<Button
icon={<Icon type="gear" />}
label="Customize"
/><Button icon="gear">
Customize
</Button><Button>
Customize
<ButtonIcon type="gear" />
</Button><Button>
Customize
<Button.Icon type="gear" />
</Button>κ°κ°μ μ½λ μΈν°νμ΄μ€λ€μ λΆμνλ©΄, κ°κ°μ΄ λ€μκ³Ό κ°μ νΉμ§μ κ°μ§κ³ μμμ μ μ μμμ΅λλ€:
- μ»΄ν¬λνΈμ λͺ¨λ μ 보λ₯Ό propsλ‘ κ΄λ¦¬νλ λ°©μ
- optionalνκ² μΆκ°λ‘ μ¬μ©λ κ²λ§ propertyλ‘ λκΈ°λ λ°©μ
- λΆλ¦¬ κ°λ₯ν μμλ μλ‘μ΄ μ»΄ν¬λνΈλ‘ μμ±
- λΆλ¦¬ κ°λ₯ν μμλ₯Ό μλ‘μ΄ μ»΄ν¬λνΈλ‘ μμ±νλ, μ»΄ν¬λνΈ λ΄λΆμ κ³μΈ΅ ꡬ쑰λ₯Ό λνλ΄κΈ° μν΄ Dot Notation λ°©μ μ¬μ©
μΌλ‘ λλ μ μμμ΅λλ€.
ν λ΄ νκ° κ²°κ³Ό, Dot Notationμ μ¬μ©ν Compound Component ννμ 4λ² μΈν°νμ΄μ€κ° κ°μ₯ μ»΄ν¬λνΈ μ§ν₯μ μ΄λ©°, μ½λμ ꡬ쑰λ₯Ό μ§κ΄μ μΌλ‘ μ΄ν΄νκΈ° μ½λ€λ κ²°λ‘ μ λλ¬ νμ΅λλ€.
Compound Component ν¨ν΄μ μ°λ¦¬κ° μ¬μ©μμκ² λ μ§κ΄μ μΈ μΈν°νμ΄μ€λ₯Ό μ 곡νλ©΄μλ μ»΄ν¬λνΈ κ³μΈ΅ ꡬ쑰λ₯Ό μ½κ² μ μ μκ² ν΄μ€λλ€. λν, μ΄λ κ° μ»΄ν¬λνΈκ° κ°λ³μ μΌλ‘ λΆλ¦¬λμ΄ μ‘΄μ¬νλ©΄μλ, λ€λ₯Έ μ»΄ν¬λνΈλ€κ³Ό μμ°μ€λ½κ² μνΈμμ©ν μ μκ² ν΄μ€λλ€.
Compound Component ν¨ν΄μ Reactμ Context APIμ κ°μ λ©μ»€λμ¦μ ν΅ν΄, μμ μ»΄ν¬λνΈκ° νμ μ»΄ν¬λνΈλ€μκ² μνλ λ©μλλ₯Ό μ묡μ μΌλ‘ 곡μ νλλ‘ λ§λλλ€. μ΄λ κ² ν¨μΌλ‘μ¨ κ° μ»΄ν¬λνΈλ μμ μ μν μλ§ μ§μ€νλ©΄μλ νμν μ 보λ κΈ°λ₯μ μ κ·Όν μ μκ² λμ΄, μ½λμ κ°λ μ±κ³Ό μ μ§λ³΄μμ±μ΄ ν₯μλ©λλ€.
JDesignSystemμ μ΄λ° Compound Component ν¨ν΄μ μ μ©νμ¬, κ° μ»΄ν¬λνΈμ λ 립μ±μ μ μ§νλ©΄μλ μ¬μ©μμκ² μ§κ΄μ μ΄κ³ μ μ°ν μΈν°νμ΄μ€λ₯Ό μ 곡ν©λλ€. μ΄λ‘ μΈν΄ μ μ°ν UIλ₯Ό μμ½κ² ꡬμΆν μ μκ²λ©λλ€.