μ΄ μ¬μΈ΅ κ°μ΄λλ₯Ό ν΅ν΄ Reactμ children prop μ νΈλ¦¬ν° ν¨μμ μ μ¬λ ₯μ μ΅λν νμ©νμΈμ. κ°λ ₯νκ³ μ¬μ¬μ© κ°λ₯ν μ»΄ν¬λνΈλ₯Ό μν΄ μμ μμλ₯Ό ν¨μ¨μ μΌλ‘ μ‘°μ, λ λλ§ λ° κ΄λ¦¬νλ λ°©λ²μ λ°°μλλ€.
React Children λ§μ€ν°νκΈ°: μνν μ»΄ν¬λνΈ κ΅¬μ±μ μν κ°λ ₯ν μ νΈλ¦¬ν°
μ΅μ μΉ κ°λ° μμμμ Reactλ λμ μ΄κ³ μΈν°λν°λΈν μ¬μ©μ μΈν°νμ΄μ€λ₯Ό ꡬμΆνλ λ° μμ΄ μ΄μ μν μ ν©λλ€. React μ μ°μ±μ ν΅μ¬μλ μ»΄ν¬λνΈ κ΅¬μ± κ°λ
μ΄ μμΌλ©°, μ΄λ₯Ό κ°λ₯νκ² νλ μ€μν μμλ λ°λ‘ children
propμ
λλ€. μ묡μ μΌλ‘ μμ£Ό μ¬μ©λμ§λ§, React.Children
μ΄ μ 곡νλ μ νΈλ¦¬ν°λ₯Ό μ΄ν΄νκ³ νμ©νλ©΄ μ»΄ν¬λνΈ λμμΈμ ν¬κ² ν₯μμμΌ λμ± κ²¬κ³ νκ³ μ¬μ¬μ© κ°λ₯νλ©° μ μ§λ³΄μνκΈ° μ¬μ΄ μ½λλ₯Ό λ§λ€ μ μμ΅λλ€.
μ΄ ν¬κ΄μ μΈ κ°μ΄λλ Reactμ μμ μμ μ νΈλ¦¬ν°μ κ°λ ₯ν κΈ°λ₯μ λν΄ μ¬μΈ΅μ μΌλ‘ λ€λ£° κ²μ λλ€. μ΄ ν¨μλ€μ΄ μμ μμλ₯Ό μ κ΅νκ² κ΄λ¦¬, λ³ν λ° λ λλ§νλ λ° μ΄λ»κ² λμμ΄ λλμ§ νμνμ¬, λμ± λ³΅μ‘νκ³ μ μμ± μλ UIλ₯Ό μμ μκ² κ΅¬μΆν μ μλλ‘ μ§μν©λλ€. μ°λ¦¬μ λͺ©νλ μ μΈκ³ κ°λ°μλ€μκ² λ³΄νΈμ μΌλ‘ μ μ© κ°λ₯ν κ°λ κ³Ό μμλ₯Ό μ 곡νμ¬ κΈλ‘λ² κ΄μ μ μ μνλ κ²μ λλ€.
Reactμ children
Prop μ΄ν΄νκΈ°
μ νΈλ¦¬ν°λ₯Ό κΉμ΄ μ΄ν΄λ³΄κΈ° μ μ, children
prop μ체μ κ·Όλ³Έμ μΈ μν μ νμ
νλ κ²μ΄ μ€μν©λλ€. μ»΄ν¬λνΈλ₯Ό μ μνκ³ μ¬λ νκ·Έμ λ«λ νκ·Έ μ¬μ΄μ λ€λ₯Έ JSX μμλ₯Ό μ λ¬νλ©΄, ν΄λΉ μμλ€μ μ»΄ν¬λνΈ λ΄μμ props.children
μΌλ‘ μ κ·Όν μ μκ² λ©λλ€.
κ°λ¨ν Card
μ»΄ν¬λνΈλ₯Ό μ΄ν΄λ³΄κ² μ΅λλ€:
function Card(props) {
return (
{props.children}
);
}
function App() {
return (
Welcome to our Global Platform!
Explore features designed for users worldwide.
);
}
μ΄ μμμμ, h2
μ p
μμλ Card
μ»΄ν¬λνΈμ children
μΌλ‘ μ λ¬λ©λλ€. Card
μ»΄ν¬λνΈλ μ΄ μμλ€μ μ체 ꡬ쑰 λ΄μμ λ λλ§ν©λλ€. μ΄ λ©μ»€λμ¦μ Reactμ μ μΈμ μ΄κ³ μ‘°ν© κ°λ₯ν νΉμ±μ κΈ°λ°μ΄λ©°, μ μ°ν λ μ΄μμ λ° μ»¨ν
μ΄λ μ»΄ν¬λνΈλ₯Ό μμ±ν μ μλλ‘ ν©λλ€.
React.Children
μ νΈλ¦¬ν°κ° νμν μ΄μ
μμλ€μ μ§μ μ λ¬νλ κ²μ΄ κ°λ¨νμ§λ§, μ΄λ¬ν μμ μμμ λν λ λ§μ μ μ΄κ° νμν μν©μ΄ μμ£Ό λ°μν©λλ€. μλ₯Ό λ€μ΄ λ€μκ³Ό κ°μ κ²½μ°μ λλ€:
- λͺ¨λ μμμ κ³΅ν΅ propμ μΆκ°ν΄μΌ ν λ.
- νΉμ μμ μμλ₯Ό νν°λ§ν΄μΌ ν λ.
- μμλ€μ λ³ννκΈ° μν΄ mapμ μ¬μ©ν΄μΌ ν λ.
- μμλ€μ κ°μλ₯Ό μΈμ΄μΌ ν λ.
- μμλ€μ΄ νΉμ νμ μΈμ§ νμΈν΄μΌ ν λ.
- μμλ€μ΄ null, undefined λλ λ°°μ΄μΌ μ μλ κ²½μ°λ₯Ό μ²λ¦¬ν΄μΌ ν λ.
props.children
μ μΌλ° λ°°μ΄μ²λΌ μ§μ μ‘°μνλ κ²μ λ¬Έμ κ° λ μ μλλ°, children
μ΄ λ°°μ΄μμ΄ λ³΄μ₯λμ§ μκΈ° λλ¬Έμ
λλ€. λ¨μΌ μμ, λ¬Έμμ΄, μ«μ, null, undefined λλ νλκ·Έλ¨ΌνΈμΌ μ μμ΅λλ€. λ°λ‘ μ΄ μ§μ μμ React.Children
μ΄ λ±μ₯νμ¬, μ΄λ¬ν λ€μν μμ νμ
λ€μ λ€λ£¨κΈ° μν μμ μ μ΄κ³ μ λ’°ν μ μλ APIλ₯Ό μ 곡ν©λλ€.
React.Children
μ νΈλ¦¬ν° μ΄ν΄λ³΄κΈ°
React.Children
κ°μ²΄λ children
propμ λ€λ£¨λ 볡μ‘μ±μ μΆμννλλ‘ μ€κ³λ μΌλ ¨μ μ μ λ©μλλ₯Ό μ 곡ν©λλ€. μ΄λ¬ν νμ μ νΈλ¦¬ν°λ€μ κ°κ° μ΄ν΄λ³΄κ² μ΅λλ€:
1. React.Children.map(children, fn, [keyPrefix])
μ΄κ²μ μλ§λ κ°μ₯ μμ£Ό μ¬μ©λλ μ νΈλ¦¬ν°μΌ κ²μ
λλ€. props.children
μ λ°λ³΅νκ³ κ° μμμ λν΄ μ 곡λ ν¨μ(fn
)λ₯Ό νΈμΆν©λλ€. μ΄λ λ€μ΄ν°λΈ JavaScript Array.prototype.map()
κ³Ό μ μ¬νμ§λ§, λ°°μ΄μ΄ μλ μμλ€μ μ¬λ°λ₯΄κ² μ²λ¦¬νκ³ null
λλ undefined
μ κ°μ μ ν¨νμ§ μμ κ°μ 건λλ°λ―λ‘ λ μμ ν©λλ€. μ νμ keyPrefix
λ νΉν λͺ©λ‘ λ΄μμ μμλ€μ λ§€νν λ κ³ μ ν ν€λ₯Ό 보μ₯νλ λ° μ μ©ν©λλ€.
μ¬μ© μ¬λ‘: κ³΅ν΅ Prop μΆκ°νκΈ°
μΌλ°μ μΈ ν¨ν΄μ μ μ ν λ§λ μ΄λ²€νΈ νΈλ€λ¬μ κ°μ κ³΅ν΅ propμ λͺ¨λ μμμ μ£Όμ νλ κ²μ λλ€.
function ThemeProvider(props) {
const theme = { backgroundColor: '#f0f0f0', color: '#333' };
return (
{React.Children.map(props.children, child => {
// Check if the child is a valid React element
if (React.isValidElement(child)) {
// Return the child with the added theme prop
return React.cloneElement(child, { theme: theme });
}
// Return non-element children as is
return child;
})}
);
}
function Greeting(props) {
const { name, theme } = props;
return (
Hello, {name}!
);
}
function App() {
return (
);
}
μ΄ μμμμ ThemeProvider
λ μμλ€μ λ°λ³΅νκ³ React.cloneElement
λ₯Ό μ¬μ©νμ¬ κ° μ ν¨ν μμμ theme
propμ μΆκ°ν©λλ€. μ΄λ μ»΄ν¬λνΈ νΈλ¦¬ μ 체μ μ μ μ€νμΌ λλ ꡬμ±μ μΌκ΄λκ² μ μ©νλ κ°λ ₯ν λ°©λ²μ
λλ€.
κΈλ‘λ² κ΄μ : ν λ§ μ μ©νκΈ°
κΈλ‘λ² μ μμκ±°λ νλ«νΌμ μμν΄ λ³΄μΈμ. CurrencyProvider
λ React.Children.map
μ μ¬μ©νμ¬ μ¬μ©μκ° μ νν ν΅ν λ° μμ κΈ°λ³Έ μ€μ μ λͺ¨λ μμ μ»΄ν¬λνΈμ μ£Όμ
ν μ μμΌλ©°, μμμ μΆμ²λ 볡μ‘μ±μ κ΄κ³μμ΄ μΌκ΄λ ν΅ν νμλ₯Ό 보μ₯ν©λλ€.
2. React.Children.forEach(children, fn, [keyPrefix])
map
κ³Ό μ μ¬νκ², forEach
λ μμλ€μ λ°λ³΅νκ³ κ° μμμ ν¨μλ₯Ό μ μ©ν©λλ€. μ£Όμ μ°¨μ΄μ μ forEach
κ° μ λ°°μ΄μ λ°ννμ§ μλλ€λ κ²μ
λλ€. μ£Όλ‘ λ‘κΉ
μ΄λ κ° μμμ λν΄ μλ‘μ΄ κ΅¬μ‘°λ‘ λ³νν μλ μμ΄ μμ
μ μννλ λ± μ¬μ΄λ μ΄ννΈλ₯Ό μν΄ μ¬μ©λ©λλ€.
μ¬μ© μ¬λ‘: μμ μ»΄ν¬λνΈ λ‘κΉ νκΈ°
λλ²κΉ λͺ©μ μΌλ‘ λ λλ§λλ λͺ¨λ μμ μ»΄ν¬λνΈμ μ΄λ¦μ λ‘κΉ νκ³ μΆμ μ μμ΅λλ€.
function LogChildren(props) {
React.Children.forEach(props.children, child => {
if (React.isValidElement(child)) {
console.log(`Rendering child: ${child.type.name || child.type}`);
}
});
return {props.children};
}
function MyComponent() { return HelloWorld ; }
κΈλ‘λ² κ΄μ : κ΅μ νλ μ± λλ²κΉ νκΈ°
λ€κ΅μ΄ μ ν리μΌμ΄μ
μμλ forEach
λ₯Ό μ¬μ©νμ¬ κ° κ΅μ νλ ν
μ€νΈ μ»΄ν¬λνΈμ key
propμ λ‘κΉ
νμ¬ κ°λ° μ€μ λλ½λ λ²μμ΄λ μλͺ»λ ν€ ν λΉμ μλ³νλ λ° λμμ μ€ μ μμ΅λλ€.
3. React.Children.count(children)
μ΄ μ νΈλ¦¬ν°λ νλκ·Έλ¨ΌνΈλ₯Ό ν¬ν¨νμ§λ§ null
, undefined
λ° λΆλ¦¬μΈμ μ μΈνκ³ μ΄ μμ μλ₯Ό λ¨μν λ°νν©λλ€. λ°λ³΅ν νμ μμ΄ κ°μλ₯Ό μ»λ κ°λ¨ν λ°©λ²μ
λλ€.
μ¬μ© μ¬λ‘: κ°μμ λ°λ₯Έ μ‘°κ±΄λΆ λ λλ§
function ListContainer(props) {
const itemCount = React.Children.count(props.children);
return (
{itemCount > 0 ? (
{props.children}
) : (
No items found. Please add some.
)}
);
}
function App() {
return (
Item 1
Item 2
{/* No children here */}
);
}
κΈλ‘λ² κ΄μ : μ¬μ©μ μ μΆ κ΄λ¦¬
μ¬μ©μκ° μ¬λ¬ νμΌμ μ
λ‘λν μ μλ νλ«νΌμμ, React.Children.count
λ "Xκ°μ νμΌμ μ
λ‘λνμ΅λλ€"μ κ°μ λ©μμ§λ₯Ό νμνκ±°λ μ
λ‘λ μ νμ κ°μ νλ λ° μ¬μ©λ μ μμ΅λλ€.
4. React.Children.only(children)
μ΄ μ νΈλ¦¬ν°λ μ»΄ν¬λνΈκ° μ νν νλμ μμμ λ°μλμ§ λ¨μΈνλ λ° μ¬μ©λ©λλ€. μ νν νλμ μμμ΄ μμΌλ©΄ μ€λ₯λ₯Ό λ°μμν΅λλ€. μ΄λ μ¬μ©μ μ§μ ν΄νμ΄λ μΈλΌμΈ νΈμ§ μ»΄ν¬λνΈμ κ°μ΄ λ¨μΌ μμλ₯Ό κ°μΈλλ‘ μ€κ³λ μ»΄ν¬λνΈμ νΉν μ μ©ν©λλ€.
μ¬μ© μ¬λ‘: λ¨μΌ μμ κ°μ νκΈ°
function TooltipWrapper(props) {
const singleChild = React.Children.only(props.children);
// Add tooltip logic here, applying it to singleChild
return (
{React.cloneElement(singleChild, { /* tooltip props */ })}
);
}
function App() {
return (
// This would throw an error:
//
//
//
//
);
}
μ€μ μ°Έκ³ : ꡬ쑰λ₯Ό κ°μ νλ λ° κ°λ ₯νμ§λ§, React.Children.only
μ κ³Όλν μ¬μ©μ μ»΄ν¬λνΈλ₯Ό λ μ μ°νκ² λ§λ€ μ μμ΅λλ€. λ¨μΌ μμμ΄ μ격ν μꡬ μ¬νμΈμ§, μλλ©΄ map
λλ forEach
κ° λ λ§μ μ μμ±μ μ 곡ν μ μλμ§ κ³ λ €ν΄ λ³΄μΈμ.
κΈλ‘λ² κ΄μ : μ λ ₯ νλ νμ€ν
κΈλ‘λ² νΌ λΌμ΄λΈλ¬λ¦¬λ FormField
μ»΄ν¬λνΈ λ΄μμ only
λ₯Ό μ¬μ©νμ¬ λ¨μΌ μ
λ ₯ μμ(μ: TextInput
, Select
λ±)λ₯Ό λ°λμ§ νμΈνκ³ , λ μ΄λΈ, μ ν¨μ± κ²μ¬ λ©μμ§ λ° λ³΄μ‘° ν
μ€νΈλ₯Ό μμ μ μΌλ‘ μ°κ²°ν μ μλλ‘ ν μ μμ΅λλ€.
5. React.Children.toArray(children)
μ΄ μ νΈλ¦¬ν°λ μ£Όμ΄μ§ λͺ¨λ μμ κ°μ ννν μμ JavaScript λ°°μ΄λ‘ λ³νν©λλ€. νλκ·Έλ¨ΌνΈλ₯Ό ννννμ¬ μ²λ¦¬νκ³ , λͺ¨λ μμμ΄ μ ν¨ν React μμ λλ μΌλ° κ°μΈμ§ νμΈν©λλ€. λ°νλ λ°°μ΄μ κ° μμμκ²λ μ΄λ―Έ ν€κ° μλ κ²½μ° κ³ μ ν ν€κ° λΆμ¬λ©λλ€.
μ΄κ²μ μμλ€μ΄ λ°°μ΄ νμμ΄ μλ μ μλ κ²½μ° λ°°μ΄λ³ μμ μ μνν΄μΌ ν λ, λλ ν¨μ¨μ μΈ λ λλ§μ μν΄ μμ μ μΈ ν€λ₯Ό 보μ₯ν΄μΌ ν λ λ§€μ° μ μ©ν©λλ€.
μ¬μ© μ¬λ‘: μμ μ¬μ λ ¬ λλ νν°λ§
function SortableList(props) {
const childrenArray = React.Children.toArray(props.children);
// Example: Reverse the order of children
const reversedChildren = childrenArray.reverse();
return (
{reversedChildren}
);
}
function App() {
return (
First
Second
Third
);
}
toArray
λ©μλλ νμ€ λ°°μ΄μ κΈ°λνλ μλνν° λΌμ΄λΈλ¬λ¦¬μ ν΅ν©ν λλ, μμμ μμλ μ νμ νλ‘κ·Έλλ° λ°©μμΌλ‘ μ‘°μν΄μΌ ν λ νΉν μ μ©ν©λλ€.
κΈλ‘λ² κ΄μ : λμ μ½ν μΈ λ μ΄μμ
λ€μν μ¬μ©μμΈ΅μ λμμΌλ‘ νλ μ½ν
μΈ κ΄λ¦¬ μμ€ν
μμ, λ μ΄μμ μ»΄ν¬λνΈλ toArray
λ₯Ό μ¬μ©νμ¬ μ¬μ©μ κΈ°λ³Έ μ€μ μ΄λ μ§μλ³ μ½ν
μΈ μ°μ μμμ λ°λΌ μΉμ
μ λμ μΌλ‘ μ¬μ λ ¬νκ±°λ νμν μ μμΌλ©°, μ΄ λͺ¨λ κ³Όμ μμ Reactμ μ¬μ‘°μ (reconciliation) νλ‘μΈμ€λ₯Ό μν μμ μ μΈ ν€λ₯Ό μ μ§ν μ μμ΅λλ€.
React.cloneElement(element, [config], [...children])
μλ°ν λ§ν΄ React.Children
μ νΈλ¦¬ν°λ μλμ§λ§, React.cloneElement
λ λ§μ μμ μ‘°μ ν¨ν΄μ λ³Έμ§μ μΌλ‘ μ°κ²°λμ΄ νμμ μ
λλ€. μ΄λ κΈ°μ‘΄ React μμλ₯Ό 볡μ νκ³ , μ νμ μΌλ‘ propsμ μμμ μμ ν μ μλλ‘ ν©λλ€.
React.cloneElement
λ λΆλͺ¨λ‘λΆν° μ λ¬λ μλ μμμ μν₯μ μ£Όμ§ μκ³ μμμ propsλ₯Ό μΆκ°νκ±°λ μ¬μ μνλ €λ κ²½μ°μ μ€μν©λλ€. μ΄λ μ ThemeProvider
μμμμ μ¬μ©λ λ©μ»€λμ¦μ
λλ€.
μ¬μ© μ¬λ‘: μμ μ»΄ν¬λνΈ κ°μ
function EnhancedList(props) {
return (
{React.Children.map(props.children, child => {
// Add a specific class to each list item
if (React.isValidElement(child)) {
return React.cloneElement(child, {
className: `list-item ${child.props.className || ''}`.trim(),
onClick: () => alert(`Clicked on: ${child.props.children}`)
});
}
return child;
})}
);
}
function App() {
return (
Item A
Item B
);
}
μ¬κΈ°μ κ° li
μμλ μΆκ° ν΄λμ€μ onClick
νΈλ€λ¬λ₯Ό λ°μΌλ©°, κΈ°μ‘΄ μμλ₯Ό μ¦κ°νλ ν΄λ‘λμ νμ 보μ¬μ€λλ€.
κΈλ‘λ² κ΄μ : μΈν°λν°λΈ λ°μ΄ν° ν μ΄λΈ
κΈλ‘λ² λΆμ λμ보λμμ DataTable
μ»΄ν¬λνΈλ cloneElement
λ₯Ό μ¬μ©νμ¬ λ°μ΄ν° κ°μ λ°λΌ κ° TableCell
μ νΈλ² ν¨κ³Ό, μ λ ¬ κΈ°λ₯ λλ μ‘°κ±΄λΆ μ€νμΌλ§μ μΆκ°νμ¬ λ³΅μ‘ν λ°μ΄ν°μ
μ λν μ¬μ©μ μνΈμμ©μ ν₯μμν¬ μ μμ΅λλ€.
λͺ¨λ² μ¬λ‘ λ° κ³ λ € μ¬ν
μ΄λ¬ν μ νΈλ¦¬ν°λ μμ²λ μλ ₯μ μ 곡νμ§λ§, μ μ€νκ² μ¬μ©νλ κ²μ΄ μ€μν©λλ€:
- λ³νμλ
React.Children.map
μ μ νΈνμμμ€: μμ λ μμμ λ λλ§ν΄μΌ ν λmap
μ μΌλ°μ μΌλ‘ μ νΈλλ μ νμ λλ€. React.cloneElement
λ₯Ό μ μ€νκ² μ¬μ©νμμμ€: κ°λ ₯νμ§λ§, ν΄λ‘λμ λλλ‘ propμ μΆμ²λ₯Ό μΆμ νκΈ° μ΄λ ΅κ² λ§λ€ μ μμ΅λλ€. μνλ λμμ νμνμ§ νμΈνμμμ€.- νμ μμλ₯Ό μ ν¨μ± κ²μ¬νμμμ€: μμμ 볡μ νκ±°λ μ‘°μνκΈ° μ μ, λ°νμ μ€λ₯λ₯Ό νΌνκΈ° μν΄
React.isValidElement()
λ₯Ό μ¬μ©νμ¬ μ ν¨ν React μμμΈμ§ νμ νμΈνμμμ€. - ν€λ₯Ό μ¬λ°λ₯΄κ² μ²λ¦¬νμμμ€: μμμ λ§€ννκ±°λ λ³νν λ, κ° μμμ κ³ μ νκ³ μμ μ μΈ ν€κ° μλμ§ νμΈνμμμ€.
React.Children.toArray
κ° λμμ΄ λ μ μμ΅λλ€. - μ±λ₯μ κ³ λ €νμμμ€: λ§€μ° λ§μ μμ μμμ΄ μκ±°λ μ¦μ μ¬λ λλ§μ κ²½μ°, λ°λ³΅ λ° ν΄λ‘λμ μλ°λλ μ€λ²ν€λλ₯Ό μ λ νμμμ€. λ©λͺ¨μ΄μ μ΄μ λλ μν κ΄λ¦¬κ° νμν μ μμ΅λλ€.
- κ°λ μ±: κ°λ ₯νμ§λ§, μ§λμΉκ² 볡μ‘ν μμ μ‘°μμ μ½λ κ°λ μ±μ λ¨μ΄λ¨λ¦΄ μ μμ΅λλ€. λλλ‘ μ»΄ν¬λνΈ κ΅¬μ‘°λ₯Ό μ¬μ€κ³νκ±°λ λ체 κ΅¬μ± ν¨ν΄(μ: λ λ νλ‘μ€ λλ κ³ μ°¨ μ»΄ν¬λνΈ)μ μ¬μ©νλ κ²μ΄ λ μ μ§λ³΄μνκΈ° μ¬μΈ μ μμ΅λλ€.
λμ λ° κ΄λ ¨ ν¨ν΄
React.Children
μ νΈλ¦¬ν°λ κΈ°λ³Έμ μ΄μ§λ§, λ€λ₯Έ κ΅¬μ± ν¨ν΄λ μ μ¬ν λͺ©νλ₯Ό λ¬μ±ν μ μμ΅λλ€:
- λ λ νλ‘μ€(Render Props): JSXλ₯Ό λ°ννλ ν¨μλ₯Ό propμΌλ‘ μ λ¬νλ©΄ λΆλͺ¨ μ»΄ν¬λνΈκ° λ λλ§μ μ μ΄νκ³ μ»¨ν μ€νΈλ μνλ₯Ό μμ μ»΄ν¬λνΈμ μ£Όμ ν μ μμ΅λλ€.
- κ³ μ°¨ μ»΄ν¬λνΈ(Higher-Order Components, HOCs): μ»΄ν¬λνΈλ₯Ό λ°μ ν₯μλ prop λλ λμμ κ°μ§ μ μ»΄ν¬λνΈλ₯Ό λ°ννλ ν¨μμ λλ€.
- Context API: κΉμ΄ μ€μ²©λ μ»΄ν¬λνΈμ κ²½μ°, Context APIλ λͺ μμ μΈ prop λλ¦΄λ§ μμ΄ λ°μ΄ν°λ₯Ό μ λ¬νλ λ°©λ²μ μ 곡νλ©°, μ΄λ λλλ‘ κ³΅μ λ°μ΄ν°λ₯Ό μ λ¬νκΈ° μν΄ μμμ μ‘°μν νμμ±μ μ€μΌ μ μμ΅λλ€.
React.Children
κ³Ό μ΄λ¬ν λ€λ₯Έ ν¨ν΄μ μΈμ μ¬μ©ν μ§ μ΄ν΄νλ κ²μ νμ₯ κ°λ₯νκ³ μ μ§λ³΄μ κ°λ₯ν React μ ν리μΌμ΄μ
μ ꡬμΆνλ λ° μ€μν©λλ€.
κ²°λ‘
React.Children
μ νΈλ¦¬ν°λ React κ°λ°μμ λꡬ μμμμ μμ΄μλ μ λ λꡬμ
λλ€. μ΄λ€μ μμ μμμ μνΈμμ©νκ³ μ‘°μν μ μλ μμ νκ³ μ λ’°ν μ μμΌλ©° ννλ ₯ μλ λ°©λ²μ μ 곡νμ¬ μ κ΅ν μ»΄ν¬λνΈ κ΅¬μ± ν¨ν΄μ κ°λ₯νκ² ν©λλ€. React.Children.map
, forEach
, count
, only
, toArray
λ₯Ό React.cloneElement
μ ν¨κ» λ§μ€ν°ν¨μΌλ‘μ¨, λ€μνκ³ μ μΈκ³μ μΈ μ¬μ©μμΈ΅μ λμμΌλ‘ νλ λμ± μ μ°νκ³ μ¬μ¬μ© κ°λ₯νλ©° κ°λ ₯ν UI μ»΄ν¬λνΈλ₯Ό ꡬμΆν μ μμ΅λλ€.
μ΄λ¬ν μ νΈλ¦¬ν°λ₯Ό νμ©νμ¬ μ»΄ν¬λνΈ λμμΈμ κ°μ νκ³ , μ½λ νμ§μ ν₯μμν€λ©°, κΆκ·Ήμ μΌλ‘ λͺ¨λ μ¬μ©μμκ² μ΄λμλ λ λ§€λ ₯μ μ΄κ³ ν¨μ¨μ μΈ μ¬μ©μ κ²½νμ μ μ¬νμμμ€.
ν΅μ¬ μμ½:
props.children
μ μ‘°ν© κ°λ₯ν μ»΄ν¬λνΈμ κ΄λ¬Έμ λλ€.React.Children
μ νΈλ¦¬ν°λ μμμ νμ μ κ΄κ³μμ΄ μμκ³Ό μμ νλ κ°λ ₯ν λ°©λ²μ μ 곡ν©λλ€.map
μ μμμ λ³ννκ³ ,forEach
λ μ¬μ΄λ μ΄ννΈλ₯Ό μνν©λλ€.count
λ μμμ μλ₯Ό μ 곡νκ³ ,only
λ λ¨μΌ μμμ κ°μ ν©λλ€.toArray
λ μμμ ννννκ³ ν€λ₯Ό λΆμ¬νμ¬ μ¬μ© κ°λ₯ν λ°°μ΄λ‘ λ§λλλ€.React.cloneElement
λ μ propμΌλ‘ μμ μ»΄ν¬λνΈλ₯Ό μ¦κ°ν μ μλλ‘ ν©λλ€.- κ°λ μ±κ³Ό μ μ§λ³΄μμ±μ μ°μ μνμ¬ μ΄λ¬ν λꡬλ€μ νλͺ νκ² μ¬μ©νμμμ€.