在呈现之前从virtualDOM访问父节点ReactJS

时间:2017-02-12 16:57:18

标签: javascript reactjs jsx virtual-dom

我需要根据父元素设置组件尺寸。是否可以在渲染之前通过ref从virtualDOM获取父级的宽度和高度?

家长



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>
    );
  }
}
&#13;
&#13;
&#13;

我需要在子项的构造函数中获取维度。

是否可以使用this.refs.container.offsetWidth

1 个答案:

答案 0 :(得分:0)

否。布局尺寸由浏览器计算,而不是虚拟DOM。手动设置尺寸,或使用CSS使您的子组件填充宽度和高度。您还可以在componentDidMount中从渲染的组件中读取宽度和高度,并在那里调用setState,这不是理想的,会导致第二次渲染,但有时需要完成。