ref
μμ±μ΄μλ μΌλΆ κ΅¬μ± μμ μ£Όλ³μ <Connector>
μ¬μ©νλ©΄ λ μ΄μ this.refs
λ₯Ό ν΅ν΄ μ‘μΈμ€ ν μ μμ΅λλ€. λλ κ·Έκ²μ κ³ μΉκΈ° μν΄ μ½κ° 리ν©ν λ§νμ΅λλ€. μ΄κ²μ λλν κ΅¬μ± μμμ λ©μ²ν κ΅¬μ± μμμ νλ μΌμ΄λΌκ³ μκ°ν©λλ€. μλλ©΄ κ°λ¨ν κ²μ λμΉκ³ μμ΅λκΉ?
μ€λ§νΈ λ λ©μ²ν κ΅¬μ± μμ
κ·Έλ λ€κ³ μκ°ν©λλ€. Connector
κ°μλ _smart_ κ΅¬μ± μμλ _dumb_ κ΅¬μ± μμλ₯Ό λ λλ§νκ³ νμν props
λ₯Ό μ λ¬ν΄μΌν©λλ€.
@cymen λΉμ μ μ΄κ²μ μν΄ ref μ½λ°±μ μ¬μ©ν μ μμ΅λλ€ :)
const decorator = (Base) => {
return class {
render() {
return <Base {...this.props} />
}
}
}
<strong i="7">@decorator</strong>
class Test {
render () {
return <div ref={this.props.refCallback}>my div</div>;
}
}
class Wrapper {
componentWillMount() {
this.nestedRef = null;
}
componentDidMount() {
console.log(React.findDOMNode(this.nestedRef));
}
setNestedRef = (ref) => {
this.nestedRef = ref;
}
render() {
return <Test refCallback={this.setNestedRef} />
}
}
μμ λ΄μ©μ divλ₯Ό κΈ°λ‘ν©λλ€. λμμ΄ λ κΉμ?
μ΄κ²μ λ°μ½λ μ΄ν°λ₯Ό μ¬μ©νμ§λ§ Connector
λ΄λΆμ μ€μ²© λ κ΅¬μ± μμμ μ½λ°±μ μ λ¬νλ©΄ μλ§λ μ μλ ν κ²μ
λλ€. μ½λ°± λ΄μμ κ΅¬μ± μμμ μ°Έμ‘°λ₯Ό λ€μ ν λΉ ν μ μμ΅λλ€.
μ€μ²© λ μ°Έμ‘°κ° μ λ§λ‘ νμν©λκΉ?
DOM λ
Έλμ μ‘μΈμ€νλ €λ κ²½μ° μΈλΆ κ΅¬μ± μμμμ findDOMNode
λ₯Ό μννλ©΄ μ λλ‘ μλν©λλ€. (λμΌν λ
Έλλ₯Ό κ°λ¦¬ ν΅λλ€.)
λ©μλλ₯Ό νΈμΆνλ €λ©΄ λμ props
λ₯Ό μ μΈμ μΈν°νμ΄μ€λ‘ μ¬μ©νλ κ²μ΄ μ’μ΅λλ€. μ΄μ λν λ
Όμλ https://github.com/jsstyles/react-jss/issues/15 λ₯Ό μ°Έμ‘°νμμμ€.
λ§μ§λ§μΌλ‘, _certain_μ΄λΌλ©΄ refκ° νμν©λλ€. μ, https://github.com/gaearon/redux/issues/183#issuecomment -115988937μ μ μ λ @johanneslumpe μ κ°μ μ€μ²© λ μ°Έμ‘°λ₯Ό μ»μ μ μμ΅λλ€.
λ«μ΅λλ€. λͺ ννμ§ μμ μ μ΄ μμΌλ©΄ μλ €μ£ΌμΈμ.
λ―Έμνμ§λ§ κ·Έλ° μ¬μν κ²½μ°μ 'findDOMNode'λ₯Ό μ¬μ©νλλ‘ μ₯λ €νλ κ²μ΄ μ΄λ»κ² ν΄κ²°μ± μΌλ‘ κ°μ£Ό λ μ μλμ§ λͺ¨λ₯΄κ² μ΅λλ€. μ΄κ²μ μν° ν¨ν΄μ λλ€! λͺ¨λ μμμ μ‘μΈμ€νκ³ λ Έλμ κ³μΈ΅ ꡬ쑰λ₯Ό μ νν μμμΌνλ jquery μλλ‘ λμκ°λλ€. κ·νμ λ¬Έμλ μ λΉνκ² μ½μμ΅λλ€.
'findDOMNode ()λ μ΄μ€μΌμ΄ν ν΄μΉμ λλ€ ...μ΄ μ΄μ€μΌμ΄ν ν΄μΉμ μ¬μ©μ κ΅¬μ± μμ μΆμνλ₯Ό λ«κΈ° λλ¬Έμ κΆμ₯λμ§ μμ΅λλ€.'
λ―Έμνμ§λ§ κ·Έλ° μ¬μν κ²½μ°μ 'findDOMNode'λ₯Ό μ¬μ©νλλ‘ μ₯λ €νλ κ²μ΄ μ΄λ»κ² ν΄κ²°μ± μΌλ‘ κ°μ£Ό λ μ μλμ§ λͺ¨λ₯΄κ² μ΅λλ€. μ΄κ²μ μν° ν¨ν΄μ λλ€! λͺ¨λ μμμ μ‘μΈμ€νκ³ λ Έλμ κ³μΈ΅ ꡬ쑰λ₯Ό μ νν μμμΌνλ jquery μλλ‘ λμκ°λλ€.
λ¬΄μ¨ λ§μΈμ§ μ λͺ¨λ₯΄κ² μ΅λλ€. λ λλ§ λ λ
Έλμ λν μ°Έμ‘°κ° νμν κ²½μ° (μ : μ€νμ
λ° ν¬κΈ° κ³μ°) findDOMNode(this)
μ¬μ©ν μ μμ΅λλ€. λλ λΉμ μκ² "λ κΉμ΄ λ€μ΄κ°κ±°λ"κ·Έκ²μ λ³ννλΌκ³ μ μνλ κ²μ΄ μλλλ€.
μ΄κ²μ΄ λ§μ‘±μ€λ½μ§ μλ€λ©΄ μμμ μ μν κ²μ²λΌ ref callback propsλ₯Ό μ¬μ©νμμμ€.
React-Nativeμλ μ μ©λμ§ μκΈ° λλ¬Έμ findDOMNode(this)
μ μμ‘΄ν΄μλ μλλ€κ³ μκ°ν©λλ€.
@xvalentino findDOMNodeλ νμνμ§ μμ΅λλ€. API λ¬Έμ μμ getWrappedInstance
κ΄λ ¨ λΉνΈλ₯Ό μ°Έμ‘°νμμμ€.
κ°μ₯ μ μ©ν λκΈ
λ―Έμνμ§λ§ κ·Έλ° μ¬μν κ²½μ°μ 'findDOMNode'λ₯Ό μ¬μ©νλλ‘ μ₯λ €νλ κ²μ΄ μ΄λ»κ² ν΄κ²°μ± μΌλ‘ κ°μ£Ό λ μ μλμ§ λͺ¨λ₯΄κ² μ΅λλ€. μ΄κ²μ μν° ν¨ν΄μ λλ€! λͺ¨λ μμμ μ‘μΈμ€νκ³ λ Έλμ κ³μΈ΅ ꡬ쑰λ₯Ό μ νν μμμΌνλ jquery μλλ‘ λμκ°λλ€. κ·νμ λ¬Έμλ μ λΉνκ² μ½μμ΅λλ€.
'findDOMNode ()λ μ΄μ€μΌμ΄ν ν΄μΉμ λλ€ ...μ΄ μ΄μ€μΌμ΄ν ν΄μΉμ μ¬μ©μ κ΅¬μ± μμ μΆμνλ₯Ό λ«κΈ° λλ¬Έμ κΆμ₯λμ§ μμ΅λλ€.'