React 渲染元素后如何获取元素的高度?
HTML
<div id="container"> <!-- This element's contents will be replaced with your component. --> <p> jnknwqkjnkj<br> jhiwhiw (this is 36px height) </p> </div>
反应JS
var DivSize = React.createClass({ render: function() { let elHeight = document.getElementById('container').clientHeight return <div className="test">Size: <b>{elHeight}px</b> but it should be 18px after the render</div>; } }); ReactDOM.render( <DivSize />, document.getElementById('container') );
结果
Size: 36px but it should be 18px after the render
它在渲染之前计算容器高度(36px)。我想在渲染后获得高度。在这种情况下,正确的结果应该是 18px。jsfiddle
看到这个小提琴(实际上更新了你的)
您需要挂钩componentDidMount在渲染方法之后运行的哪个。在那里,您可以获得元素的实际高度。
componentDidMount
var DivSize = React.createClass({ getInitialState() { return { state: 0 }; }, componentDidMount() { const height = document.getElementById('container').clientHeight; this.setState({ height }); }, render: function() { return ( <div className="test"> Size: <b>{this.state.height}px</b> but it should be 18px after the render </div> ); } }); ReactDOM.render( <DivSize />, document.getElementById('container') ); <script src="https://facebook.github.io/react/js/jsfiddle-integration-babel.js"></script> <div id="container"> <p> jnknwqkjnkj<br> jhiwhiw (this is 36px height) </p> <!-- This element's contents will be replaced with your component. --> </div>