2017-02-12 7 views
0

Мне нужно установить размеры компонентов в зависимости от родительского элемента. Можно ли получить ширину и высоту родителя по ссылке из virtualDOM до его рендеринга?Доступ к родительскому узлу из virtualDOM перед его отображением | ReactJS

Родитель

export default class App extends React.Component { 
 
    render() { 
 

 
    return (
 
     <div> 
 
     <div className={'avocado-container'} ref={(container) => { this.container = container; }}> 
 
      <Resizer parent={this} scrollAxis={'y'}> 
 
      </Resizer> 
 
     </div> 
 
     </div> 
 
    ); 
 
    } 
 
}

мне нужно, чтобы получить размеры в конструкторе ребенка.

Возможно с чем-то вроде this.refs.container.offsetWidth?

+0

Почему бы не передать их с родительского компонента в качестве реквизита? – havenchyk

ответ

0

№: Размеры макета вычисляются браузером, а не Виртуальным DOM. Либо установите размеры вручную, либо используйте CSS, чтобы сделать ширину и высоту заполнения вашего дочернего компонента. Вы также можете прочитать ширину и высоту от отображаемого компонента в componentDidMount и вызвать там setState, что не является идеальным и вызовет второй рендер, но иногда это необходимо сделать.

+0

будет ли такой компонент проверен? – havenchyk

+0

, если вам нужно проверить чтение потока элементов в didMount, вы можете использовать такие инструменты, как jsdom, для обеспечения необходимой среды. если вы не хотите его тестировать, вы можете сделать оператор 'if' в didMount, чтобы проверить наличие определенных объектов, например' global.window' –

+0

не поймите меня неправильно, но jsdom не поддерживает получения реальной ширины и высоты элемента html, поэтому будет сложно протестировать без реальной среды браузера asaik – havenchyk

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

  • Нет связанных вопросов^_^