μ΄ν΄νκΈ° μ½λλ‘ μμ λ₯Ό μμ±νμ§λ§ κΈ°λ³Έμ μΌλ‘ "νμ props λλ½"μΌλ‘ μΈν΄ μ½μμ κ²½κ³ κ° νμλ©λλ€.
propsλ React.cloneElement
κ° μλ μμμ μ 곡λλ―λ‘ λλ½λ propsμ λν κ²½κ³ λ₯Ό κΈ°λνμ§ μμμ΅λλ€. λλ μ΄κ²μ΄ κ·Ήλ¨μ μΈ κ²½μ° μΌ μ μλ€λ κ²μ μ΄ν΄ν©λλ€ ...
https://jsfiddle.net/kdsvgbzu/1/
<A name="name" value="value">
<B></B>
</A>
class A extends React.Component {
render() {
return (
<div>
{React.Children.map(this.props.children, function(child) {
return React.cloneElement(child, {
name: this.props.name,
value: this.props.value
});
}, this)}
</div>
);
}
}
A.propTypes = {
name: PropTypes.string.isRequired,
value: PropTypes.string.isRequired
};
class B extends React.Component {
render() {
return <span>{this.props.name} : {this.props.value}</span>;
}
}
B.propTypes = {
name: PropTypes.string.isRequired,
value: PropTypes.string.isRequired
};
μ΄κ²μ μλμ μ λλ€. μμ μμ± μ propsμ μ ν¨μ±μ κ²μ¬νλ©΄ λ μ μ©ν μ€λ₯κ° μμ±λ©λλ€. λν Flowμ κ°μ μ μ μ ν μμ€ν μ λμκ³Ό λ λ°μ νκ² μΌμΉν©λλ€. νμ¬λ‘μλ μ΄λ¬ν μνμ μ ν μ¬νμΌλ‘ νμνλ κ²μ΄ κ°μ₯ μ’μ΅λλ€. λν Aμ κ°μ λΆλͺ¨μμ Bμ κ°μ μμμΌλ‘ μνμ μ λ¬νλ λ λ€λ₯Έ μ§μ λ°©λ²μ μ 곡νλ 컨ν μ€νΈλΌλ κΈ°λ₯μ λμ€μ λμ ν μλ μμ΅λλ€.
κ·Έκ²μ΄ λ΄κ° μκ°νλ κ±°μ£ . @spicyj κ°μ¬
@tleunen μ€μ μ¬μ© μ¬λ‘κ° λ¬΄μμΈμ§ λͺ¨λ₯΄κ² μ§λ§ μμμκ² μνμ μ λ¬ν μ± μμ΄ μλ μ¬μ¬μ© κ°λ₯ν κ΅¬μ± μμλ₯Ό ꡬννλ λμ μ΄ λ¬Έμ λ₯Ό λ°κ²¬νμ΅λλ€.
ReactDOM.render(
<NumberSelector>
<ComponentRequiringTheNumber />
</NumberSelector>
)
κ²°κ΅, λλ λ μ°μν μ루μ μ΄λΌλ κ²μ λ°κ²¬νμ¬ λ¬Έμ λ₯Ό ν΄κ²°νμ΅λλ€.
ReactDOM.render(
<NumberSelector>
{({number}) => <ComponentRequiringTheNumber number={number} />}
</NumberSelector>
)
ComponentRequiringTheNumber
μ μ’
μμ±μ΄ λͺ
μμ μ΄κ³ NumberSelector
μ μν μ΄ λͺ
νν΄μ§κΈ° λλ¬Έμ ν¨μ¬ λ μ’μν©λλ€. μ΄λ° μμΌλ‘ μ€μ²©λ κ΅¬μ± μμμ μ 곡λ μνμ κ΄λ ¨μ΄ μμ λλ§ νκ°λ©λλ€.
λ°μ΄μ¬λ¦°μ μ μ©: https://jsfiddle.net/ap1e9rk3/1/
κ°μ₯ μ μ©ν λκΈ
@tleunen μ€μ μ¬μ© μ¬λ‘κ° λ¬΄μμΈμ§ λͺ¨λ₯΄κ² μ§λ§ μμμκ² μνμ μ λ¬ν μ± μμ΄ μλ μ¬μ¬μ© κ°λ₯ν κ΅¬μ± μμλ₯Ό ꡬννλ λμ μ΄ λ¬Έμ λ₯Ό λ°κ²¬νμ΅λλ€.
κ²°κ΅, λλ λ μ°μν μ루μ μ΄λΌλ κ²μ λ°κ²¬νμ¬ λ¬Έμ λ₯Ό ν΄κ²°νμ΅λλ€.
ComponentRequiringTheNumber
μ μ’ μμ±μ΄ λͺ μμ μ΄κ³NumberSelector
μ μν μ΄ λͺ νν΄μ§κΈ° λλ¬Έμ ν¨μ¬ λ μ’μν©λλ€. μ΄λ° μμΌλ‘ μ€μ²©λ κ΅¬μ± μμμ μ 곡λ μνμ κ΄λ ¨μ΄ μμ λλ§ νκ°λ©λλ€.λ°μ΄μ¬λ¦°μ μ μ©: https://jsfiddle.net/ap1e9rk3/1/