Props
1. κ°μ
리μ‘νΈ Appλ₯Ό κ°λ°νλ κ²μ λΆμ΄λΉ΅μ λ§λλ κ²κ³Ό λΉκ΅νμ λ λΆμ΄λΉ΅ νμ μ»΄ν¬λνΈ, λΆμ΄λΉ΅ μ μ¬λ£λ props, μμ±λ λΆμ΄λΉ΅μ 리μ‘νΈ μ¨λ¦¬λ¨ΌνΈκ° λλ€.
μ΄μ€ propsμ λ°λΌ κ°μ μ»΄ν¬λνΈλΌ ν΄λ λͺ¨λ λ€λ₯Έ λ΄μ©μ΄ λ€μ΄κ° 리μ‘νΈ μ¨λ¦¬λ¨ΌνΈλ₯Ό λ§λ€ μ μλ€. νμ§λ§ κ°μ μ»΄ν¬λνΈλ₯Ό μ¬μ©νκΈ° λλ¬Έμ μ 체μ μ νμ κ°λ€.
μ΄μ²λΌ propsλ κ°μ 리μ‘νΈ μ»΄ν¬λνΈμμ λμ 보μ΄λ κΈμλ μκΉ λ±μ μμ±μ λ°κΎΈκ³ μΆμ λ μ¬μ©νλ μ»΄ν¬λνΈμ μ μ¬λ£λΌκ³ μκ°νλ©΄ λλ€.
2. propsλ μ½κΈ° μ μ©
All React components must act like pure functions with respect to their props.
리μ‘νΈ κ³΅μ λ¬Έμλ μμ κ°μ΄ propsμ μ±κ²©μ μ€λͺ νκ³ μλ€. 곡μλ¬Έμμλ pure functionsμ΄λΌλ ν¨μκ° λμ€λλ° κ·Έλ λ€λ©΄ pure functionsμ΄λΌλ κ²μ 무μμΌκΉ?
μλμ ν¨μλ₯Ό 보μ
function sum(a, b) {
return a + b;
}μμ ν¨μ sumμ μΈμ a,bμ κ°μ λ³κ²½νμ§ μμΌλ©΄, κ°μ μ
λ ₯κ°μ λν΄μλ νμ κ°μ μΆλ ₯κ°μ λΈλ€. μ΄λ¬ν ν¨μλ₯Ό Pureνλ€κ³ νλ€.
λ°λλ‘ Pureμ λ°λμΈ Impureν ν¨μμ μλ₯Ό μ΄ν΄λ³΄μ
function widthdraw(account, amount) {
account.total -= amount;
}μμ ν¨μκ° μ€νμ΄ λλ©΄ μμ μ μ λ ₯κ°μ λ³κ²½νκΈ° λλ¬Έμ μμνμ§ μλ ν¨μκ° λλ€.
μμν¨μμ μμνμ§ μλ ν¨μλ₯Ό μ΄ν΄λ΄€λ€. λ€μ μ 리νμλ©΄
λͺ¨λ 리μ‘νΈ μ»΄ν¬λνΈλ propsλ₯Ό μ§μ λ°κΏ μ μκ³ (μ½κΈ° μ μ©), κ°μ propsμ λν΄μλ νμ κ°μ κ²°κ³Ό(리μ‘νΈ μ¨λ¦¬λ¨ΌνΈ)λ₯Ό 보μ¬μ€λ€.
3. propsμ κΈ°λ³Έ μ¬μ©λ²
Parents μ»΄ν¬λνΈμμ Child μ»΄ν¬λνΈλ‘ nameμ΄λΌλ κ°μ μ λ¬νκ³ μ νλ μν©μ κ°μ νμ. κ·Έλ λ€λ©΄ μλμ κ°μ΄ μ½λλ₯Ό μμ±ν΄μΌ νλ€.
Child.js κ°μ΄ Child μ»΄ν¬λνΈμκ² μ λ¬λλ propsλ νλΌλ―Έν°λ₯Ό ν΅νμ¬ μ‘°νν μ μλ€. propsλ κ°μ²΄ ννλ‘ μ λ λ€λ©°, λ§μ½ nameκ°μ μ‘°ννκ³ μΆλ€λ©΄ props.nameμ μ‘°ννλ©΄ λλ€.
4. μ¬λ €κ°μ propsμ ꡬ쑰λΆν΄ ν λΉ
Parents μ»΄ν¬λνΈμμ nameκ° λΏ μλλΌ age, regionμ Child μ»΄ν¬λνΈμ λ겨주λ μν©μ κ°μ ν΄λ³΄μ. λΏλ§ μλλΌ κ°μ²΄ ννλ‘ μ λ¬λλ propsλ₯Ό ES6μ λ±μ₯ν ꡬ쑰λΆν΄(λΉκ΅¬μ‘°ν) ν λΉ ννμμ μ¬μ©ν΄λ³΄μ.
propsμ κΈ°λ³Έ μ¬μ©λ²μ λ€λ₯΄κ² Child μ»΄ν¬λνΈμ νλΌλ―Έν°μμ ꡬ쑰λΆν΄ ν λΉ λ¬Έλ²μ ν΅ν΄ propsκ°λ€μ λΆλ¬μλ€. μ΄μ μλ props.λ₯Ό μ¬μ©ν΄ κ°κ°μ κ°μ λΆλ¬μμ§λ§ ꡬ쑰λΆν΄ ν λΉμ ν΅ν΄ μ‘°κΈ λ κ°κ²°νκ² μ½λλ₯Ό μμ±ν μ μλ€.
5. defaultPropsλ‘ κΈ°λ³Έκ° μ€μ
λ§μ½ μ λ¬ λ°μ propsκ°μ΄ μμΌλ©΄ μ΄λ‘ν κΉ? μ΄λ΄λλ μ‘°κ±΄λΆ λλλ§μ ν΅ν΄ κ°μ μ€μ ν μ μκ³ defaultPropsλ₯Ό μ΄μ©ν΄ κΈ°λ³Έκ°μ μ€μ ν μ μλ€. μ‘°κ±΄λΆ λλλ§μ λ€λ₯Έ μ±ν°μμ μμΈν λ€λ£¨κ³ μ΄λ² μ±ν°μμλ defaultPropsλ₯Ό μ¬μ©ν΄ 보μ.
μλμ μ½λλ₯Ό μ΄ν΄λ³΄μ.
Parents.jsμμ λκ°μ Child μ»΄ν¬λνΈλ₯Ό νΈμΆνκ³ μλ€. νμ§λ§ νλλ nameκ°μ΄ μκ³ λ€λ₯Έ νλλ κ°μ΄ μλ€.
nameκ°μ΄ μλ κ²½μ° Child.jsμμλ Child.defaultPropsλ₯Ό μ¬μ©ν΄ nameμ κΈ°λ³Έκ°μ μ§μ νλ€. μλλ μ μ½λμ κ²°κ³Όμ΄λ€.

6. props.children
μ»΄ν¬λνΈ νκ·Έ μ¬μ΄μ λ£κ³ μΆμ μ¨λ¦¬λ¨ΌνΈ λλ λ€λ₯Έ μ»΄ν¬λνΈλ₯Ό μΆκ°νκ³ μΆμ λ props.childrenμ μ¬μ©νλ©΄ λλ€. ꡬ쑰λΆν΄ ν λΉμΌλ‘ κ°λ¨νκ² μ¬μ©ν΄λ μ’λ€.
컨ν μΈ μ λ΄μ©μ΄ λ΄κΈ΄ Content μ»΄ν¬λνΈκ° Wrapper μ»΄ν¬λνΈλ‘ κ°μΈμ Έ μλ€κ³ κ°μ ν΄λ³΄μ. κ·Έλ λ€λ©΄ μ½λλ μλμ κ°μ κ²μ΄λ€.

μμ μ½λλ₯Ό μ΄ν΄λ³΄μ. Content μ»΄ν¬λνΈκ° Wrapper μ»΄ν¬λνΈλ‘ κ°μΈμ¬μλ€. Content μ»΄ν¬λνΈμ Wrapper μ»΄ν¬λνΈ μ¬μ΄μλ <h2>Content μ»΄ν¬λνΈ μ
λλ€.</h2>μ μ¨λ¦¬λ¨ΌνΈκ° μμ§λ§ νλ©΄μλ λνλμ§ μμλ€.
μ κ·Έλ΄κΉ? κ·Έ μ΄μ λ <h2>Content μ»΄ν¬λνΈ μ
λλ€.</h2>λ νλμ propsμΈλ° Wrapper μ»΄ν¬λνΈμμ ν΄λΉ propsλ₯Ό μ΄λμ λ£μμ§ μ μνμ§ μμμμ΄λ€. μ΄λ νμν κ²μ΄ λ°λ‘ props.childrenμ΄λ€.
λ€μκ³Ό κ°μ΄ μ½λλ₯Ό μμ νμ.

μ΄λ²μλ μ±κ³΅μ μΌλ‘ <h2>Content μ»΄ν¬λνΈ μ
λλ€.</h2>μ λ΄μ©μ΄ μΆλ ₯λμλ€. λ€λ₯Έμ μ μ°Ύμ보μ.
Wrapper μ»΄ν¬λνΈμ propsλ₯Ό ꡬ쑰λΆν΄ ν λΉμ νμ¬ childrenκ°μ κ°μ Έμλ€. κ·Έλ¦¬κ³ <h1>Wrapper μ»΄ν¬λνΈ μ
λλ€.</h1>μλμ childrenλ₯Ό λ£μ΄μ£Όμλ€. κ·Έλμ Content μ»΄ν¬λνΈμ <h2>Content μ»΄ν¬λνΈ μ
λλ€.</h2>μ΄ λ°λ‘ μλμ μμΉνκ² λλ€.
Wrapper.jsμμ μ½μλ‘ childrenλ₯Ό μ°μ΄λ³΄μ κ·Έλ¬λ©΄ μλμ κ°μ κ°μ²΄μ λ³Ό μ μλ€.

childrenμλ Content μ»΄ν¬λνΈμμ μμ±λ 리μ‘νΈ μ¨λ¦¬λ¨ΌνΈκ° κ°μ²΄ ννλ‘ μ‘΄μ¬νκ³ μμμ νμΈν μ μλ€.
μ£Όμν μ μ props.childrenμ΄ μλ λ€λ₯Έ μμμ μ΄λ¦μΌλ‘ μ μΈνλ©΄ μνλ κ²°κ³Όλ¬Όμ μ»μ μ μλ€.
7. Conclusion
propsμ λν΄ κ³΅λΆνλ©΄μ μμν¨μλΌλ κ°λ λ ν¨κ» λ°°μ λ€.propsκ°μ΄ λ³ννμ§ μλ λ€λ κ²μ μ¬λ¬ νλ‘μ νΈλ₯Ό μ§ννλ©΄μ μκ³ μμμ§λ§ μ΄λ° κ°λ μ΄ μμν¨μμ μ°κ΄μ΄ μλ€λ κ²μ μκ² λμλ€. κ·Έλ¦¬κ³ λ겨λ°λpropsμ κ°μ΄ μλ€λ©΄ λλ μ§κΈκΉμ§ μ‘°κ±΄λΆ λλλ§μ ν΅ν΄ μ½λλ₯Ό μμ±νλ€. νμ§λ§ λ€λ₯Έ λ°©λ²μΈdefaultPropsμ λν΄ μκ² λμκ³ ν λ²μ―€ μ¬μ©ν΄μ 리μ‘νΈμ λν μ§μμ λνμΌ κ² λ€. μ¬μ€typescriptλ₯Ό 리μ‘νΈμ λμ νλ€λ©΄ ν¨μ¬ μ’μ λ°©λ²μ΄ μμ§λ§... μμλtypescriptλ₯Ό λ°°μ΄μ§ μΌλ§ μλμκ³ κ·Έ λν κΈ°λ‘μ λ¨κΈ°μ§ μμ κΈ°μ΅μ λμ§ μλλ€...γ γ props.childrenλ₯Ό μ½μλ‘ μ²μ μ°μ΄λ³΄λ κ²λ μ¬λ―Έμμλ€! κ·Έ μμ λ΄μ©μΈ 리μ‘νΈ μ¨λ¦¬λ¨ΌνΈλΌ μ κΈ°νλ€~ typescriptλ μ 리λ₯Ό μνμπ
μ°Έκ³
λμ - μνμ μ²μ λ§λ 리μ‘νΈ λ¦¬μ‘νΈ κ³΅μλ¬Έμ Componentsμ Props 5. props λ₯Ό ν΅ν΄ μ»΄ν¬λνΈμκ² κ° μ λ¬νκΈ°
π 2022-07-22
Last updated