рдЕрдЧрд░ рдореИрдВ рдХреБрдЫ рдШрдЯрдХреЛрдВ рдХреЗ рдЖрд╕рдкрд╛рд╕ <Connector>
рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рдЬрд┐рдирдореЗрдВ ref
рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИ, рддреЛ рдореИрдВ рдЕрдм this.refs
рдорд╛рдзреНрдпрдо рд╕реЗ рдЗрд╕реЗ рдПрдХреНрд╕реЗрд╕ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред рдореИрдВрдиреЗ рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╕ рдереЛрдбрд╝рд╛ рд╕рд╛ рд░рд┐рдлреНрд▓реЗрдХреНрдЯ рдХрд┐рдпрд╛ - рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕реНрдорд╛рд░реНрдЯ рдмрдирд╛рдо рдбрдВрдмрд▓ рдХрдВрдкреЛрдиреЗрдВрдЯреНрд╕ рдХреА рддрд░рд╣ рд╣реИред рдпрд╛ рдореИрдВ рдХреБрдЫ рд╕рд░рд▓ рдпрд╛рдж рдХрд░ рд░рд╣рд╛ рд╣реВрдБ?
рд╕реНрдорд╛рд░реНрдЯ рдмрдирд╛рдо рдЧреВрдВрдЧрд╛ рдШрдЯрдХ
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рд╛рдВ, Connector
_ props
рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
@ рдЖрдк рдЗрд╕рдХреЗ рд▓рд┐рдП рд░реЗрдлрд░реА рдХреЙрд▓рдмреИрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ :)
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_ рдЖрдк рдПрдХ рд░реЗрдлрд░реА рдХреА рдЬрд░реВрд░рдд рд╣реИ, рд╣рд╛рдБ, рдЖрдк рдореЗрдВ рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛ @johanneslumpe рдХреА рддрд░рд╣ рдПрдХ рдиреЗрд╕реНрдЯреЗрдб рд░реЗрдлрд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ https://github.com/gaearon/redux/issues/183#issuecomment -+резрез,релреп,реорео,репрейренред
рдмрдВрдж, рдХреГрдкрдпрд╛ рдореБрдЭреЗ рдмрддрд╛рдПрдВ рдХрд┐ рдХреНрдпрд╛ рдХреБрдЫ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИред
рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рдпрд╣ рдирд╣реАрдВ рджреЗрдЦрддрд╛ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреЗ рддреБрдЪреНрдЫ рдорд╛рдорд▓реЗ рдореЗрдВ 'findDOMNode' рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рдкреНрд░реЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд░рдирд╛ рднреА рдПрдХ рд╕рдорд╛рдзрд╛рди рдорд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рдПрдХ рд╡рд┐рд░реЛрдзреА рдкреИрдЯрд░реНрди рд╣реИ! рдпрд╣ рд╣рдореЗрдВ jquery рдХреЗ рджрд┐рдиреЛрдВ рдореЗрдВ рд▓реМрдЯрд╛рддрд╛ рд╣реИ, рдЬрд╣рд╛рдБ рд╣рдореЗрдВ рд╕рднреА рддрддреНрд╡реЛрдВ рдХреЛ рдПрдХреНрд╕реЗрд╕ рдХрд░рдиреЗ рдФрд░ рдиреЛрдбреНрд╕ рдХреЗ рдкрджрд╛рдиреБрдХреНрд░рдо рдХреЛ рдЬрд╛рдирдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЖрдкрдХреЗ рдбреЙрдХреНрд╕ рдиреЗ рд╕рд╣реА рдкрдврд╝рд╛:
'findDOMNode () рдПрдХ рдПрд╕реНрдХреЗрдк рд╣реИрдЪ рд╣реИ ... рдЗрд╕ рдПрд╕реНрдХреЗрдк рд╣реИрдЪ рдХреЗ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХреЛ рд╣рддреЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдХрдВрдкреЛрдиреЗрдВрдЯ рдПрдмреНрд╕рдЯреНрд░рдХреНрд╢рди рдХреЛ рдЫреЗрдж рджреЗрддрд╛ рд╣реИ'
рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рдпрд╣ рдирд╣реАрдВ рджреЗрдЦрддрд╛ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреЗ рддреБрдЪреНрдЫ рдорд╛рдорд▓реЗ рдореЗрдВ 'findDOMNode' рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рдкреНрд░реЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд░рдирд╛ рднреА рдПрдХ рд╕рдорд╛рдзрд╛рди рдорд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рдПрдХ рд╡рд┐рд░реЛрдзреА рдкреИрдЯрд░реНрди рд╣реИ! рдпрд╣ рд╣рдореЗрдВ jquery рдХреЗ рджрд┐рдиреЛрдВ рдореЗрдВ рд▓реМрдЯрд╛рддрд╛ рд╣реИ, рдЬрд╣рд╛рдБ рд╣рдореЗрдВ рд╕рднреА рддрддреНрд╡реЛрдВ рдХреЛ рдПрдХреНрд╕реЗрд╕ рдХрд░рдиреЗ рдФрд░ рдиреЛрдбреНрд╕ рдХреЗ рдкрджрд╛рдиреБрдХреНрд░рдо рдХреЛ рдЬрд╛рдирдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред
рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рддреБрдореНрд╣рд╛рд░рд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИред рдореИрдВ рдХрд╣ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐, рдпрджрд┐ рдЖрдкрдХреЛ рд░реЗрдВрдбрд░ рдиреЛрдб (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрд╕рдХреА рднрд░рдкрд╛рдИ рдФрд░ рдЖрдХрд╛рд░ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП) рдХреЗ рд╕рдВрджрд░реНрдн рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЖрдк findDOMNode(this)
рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдореИрдВ рдЖрдкрдХреЛ "рдЧрд╣рд░рд╛ рдЬрд╛рдиреЗ" рдпрд╛ рдЗрд╕реЗ рдмрджрд▓рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рдирд╣реАрдВ рджреЗ рд░рд╣рд╛ рд╣реВрдВред
рдХрд╣рд╛ рдХрд┐ рдЕрдЧрд░ рдЖрдк рдЗрд╕рд╕реЗ рдЦреБрд╢ рдирд╣реАрдВ рд╣реИрдВ, рддреЛ рдмрд╕ рдКрдкрд░ рдмрддрд╛рдП рдЧрдП рдЕрдиреБрд╕рд╛рд░ рдХреЙрд▓рдмреИрдХ рдкреНрд░реЙрдкреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рд╣рдореЗрдВ findDOMNode(this)
рджреЗрдЦрдиреЗ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд░рд┐рдПрдХреНрдЯ-рдиреЗрдЯрд┐рд╡ рдкрд░ рд▓рд╛рдЧреВ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред
@xvalentino findDOMNode рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИред рдПрдкреАрдЖрдИ рдбреЙрдХреНрд╕ рдореЗрдВ getWrappedInstance
рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдмрд┐рдЯреНрд╕ рджреЗрдЦреЗрдВред
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рдпрд╣ рдирд╣реАрдВ рджреЗрдЦрддрд╛ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреЗ рддреБрдЪреНрдЫ рдорд╛рдорд▓реЗ рдореЗрдВ 'findDOMNode' рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рдкреНрд░реЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд░рдирд╛ рднреА рдПрдХ рд╕рдорд╛рдзрд╛рди рдорд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рдПрдХ рд╡рд┐рд░реЛрдзреА рдкреИрдЯрд░реНрди рд╣реИ! рдпрд╣ рд╣рдореЗрдВ jquery рдХреЗ рджрд┐рдиреЛрдВ рдореЗрдВ рд▓реМрдЯрд╛рддрд╛ рд╣реИ, рдЬрд╣рд╛рдБ рд╣рдореЗрдВ рд╕рднреА рддрддреНрд╡реЛрдВ рдХреЛ рдПрдХреНрд╕реЗрд╕ рдХрд░рдиреЗ рдФрд░ рдиреЛрдбреНрд╕ рдХреЗ рдкрджрд╛рдиреБрдХреНрд░рдо рдХреЛ рдЬрд╛рдирдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЖрдкрдХреЗ рдбреЙрдХреНрд╕ рдиреЗ рд╕рд╣реА рдкрдврд╝рд╛:
'findDOMNode () рдПрдХ рдПрд╕реНрдХреЗрдк рд╣реИрдЪ рд╣реИ ... рдЗрд╕ рдПрд╕реНрдХреЗрдк рд╣реИрдЪ рдХреЗ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХреЛ рд╣рддреЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдХрдВрдкреЛрдиреЗрдВрдЯ рдПрдмреНрд╕рдЯреНрд░рдХреНрд╢рди рдХреЛ рдЫреЗрдж рджреЗрддрд╛ рд╣реИ'