【发布时间】:2019-05-22 11:27:10
【问题描述】:
有没有办法获取被包装组件的 DOM 高度?
我尝试添加一个 ref,但控制台错误我 Function components cannot be given refs.
而且我设置了forward ref,但好像不是这样。
export default function withInfiniteScroll(Component) {
return class extends React.Component {
componentDidMount() {
window.addEventListener('scroll', this.onScroll, true);
}
onScroll = () => {
// here
console.log(
'window.innerHeight????', window.innerHeight,
'\ndocument.body.offsetHeight????', document.body.offsetHeight,
);
}
render() {
return <Component {...this.props} />;
}
};
}
我想记录Component的高度,但是这些记录没有意义,它们是html-body的高度而不是Component的高度。
window.innerHeight???? 767
document.body.offsetHeight???? 767
但是当我在 chrome 控制台中时:
console.log(document.getElementsByClassName('home-container')[0].clientHeight)
> 1484
'home-container' 是一个封装组件:
withInfiniteScroll(HomeContainer);
【问题讨论】:
-
我设置了前向引用,但似乎不是这样 - 你如何设置它?不,情况就是这样。请提供stackoverflow.com/help/mcve。
-
@estus 嗨,在 HOC 中我创建了前向 ref,但是如何在我的 HOC 中使用它?我认为这就是重点。
-
与任何其他参考一样。我举个例子。
标签: html reactjs dom react-ref