2016-08-15 7 views
8

Powiedziano mi, że refs są prawdopodobnie przestarzałe.Uzyskaj odwołanie do elementu bez użycia refs w reakcji

Jak więc mógłbym osiągnąć następujące, biorąc pod uwagę ten kod:

export default class DemoAxis extends Component { 
    componentDidMount() { 
     const el = this.refs.line; 

     const dimensions = .getDimensionsFromElement(el); 
    } 

    render() { 
     return (
     <div ref="line"> 
     </div> 
    ); 
    } 

muszę odniesienie do div kolejce wymiary od niego.

Wiem, że istnieje odwołanie zwrotne, czy powinienem używać tego?

+0

@MarcoScabbiolo https://facebook.github.io/react/docs/more-about-refs.html#the-ref-string-attribute –

Odpowiedz

8

Tylko string refs są uważane za amortyzację, można nadal korzystać callback refs:

export default class DemoAxis extends Component { 
    componentDidMount() { 
     const dimensions = .getDimensionsFromElement(this._line); 
    } 

    render() { 
     return (
     <div ref={ (ref) => this._input = ref }> 
     </div> 
    ); 
    } 
} 

lub w przypadku nie trzeba ref, po prostu węzła DOM z komponentu this korzystając ReactDOM.findDOMNode (demo):

componentDidMount() { 
    const dimensions = ReactDOM.findDOMNode(this).getBoundingClientRect(); 
    console.log(dimensions); 
}, 
Powiązane problemy