2016-12-30 3 views
4

У меня есть 4 экземпляра определенного класса React. После componentDidMount() Я хочу сохранить y-позицию каждого экземпляра.Как получить элемент ReactJS внутри componentDidMount()?

Как я могу обратиться к визуализированному элементу? Я не могу использовать classname, потому что у меня есть 4 элемента одного класса с разными позициями.

Мой ReactJS компонент:

const Col = React.createClass({ 
    componentDidMount: function() { 
     //here address the actual rendered col-instance 
    }, 

    render() { 
     return (
      <div className='col'> 
      </div> 
     ); 
    } 
}); 
+0

Просто пытаясь понять вопрос больше. Вы пытаетесь сохранить y-позицию каждого экземпляра компонента React для использования позже? Также меняется ли положение y каждого из этих элементов после монтажа? – HussienK

+0

Мне нужно его хранить, это не изменится. Может быть, я могу использовать this.ref? – vuvu

+1

Не могли бы вы немного объяснить, чего вы пытаетесь достичь? Где вы хотите хранить что? Как вы хотите получить доступ к сохраненным значениям и откуда? –

ответ

5

Использование refs.

Сначала подключите атрибут ref к каждому из элементов JSX cols. Затем используйте этот ref, внутри метода componentDidMount, для доступа к узлу DOM компонента (фактическому элементу HTMLElement). Наконец, получите позицию/смещение элемента или что-нибудь еще, что вам нужно.

const Col = React.createClass({ 
    componentDidMount: function() { 
     // this.refs.col1 is the actual DOM element, 
     // so you can access it's position/offset or whatever 
     const offsetTop = this.refs.col1.offsetTop; 
    }, 

    render() { 
     return (
      <div className="col" ref="col1"> 
      </div> 
     ); 
    } 
}); 

PS: Я не уверен, что вы имеете в виду, говоря, элемент y позиции. В любом случае, как только вы узнаете, как получить элемент DOM (this.refs.col1), вы можете использовать javascript to retrieve the position, который вам нужен.

+1

Это было хорошее решение для более старого API React.js. Из https://reactjs.org/docs/refs-and-the-dom.html: «Мы советуем против этого, потому что строки refs имеют некоторые проблемы, считаются устаревшими и, вероятно, будут удалены в одном из будущих выпусков. «С новым API здесь можно найти решение: https://stackoverflow.com/questions/42242146/react-how-to-access-the-dom-element-in-my-render-function-from-the-same-compone – favero

Смежные вопросы