【发布时间】:2018-08-02 13:54:27
【问题描述】:
我发现this answer for tracking page size 的代码 sn-p 很有用。我想把window.innerHeight换成$("#list_container").height:
constructor(props) {
super(props);
this.state = { width: 0, height: 0 };
this.updateWindowDimensions = this.updateWindowDimensions.bind(this);
}
componentDidMount() {
this.updateWindowDimensions();
window.addEventListener('resize', this.updateWindowDimensions);
}
componentWillUnmount() {
window.removeEventListener('resize', this.updateWindowDimensions);
}
updateWindowDimensions() {
// !!! This works:
this.setState({ width: window.innerWidth, height: window.innerHeight });
// !!! This doesn't work:
this.setState({ width: $("#list_container").width(), height: $("#list_container").height() });
}
编辑:更新为 .width() 和 .height(),两者都尝试过,但都不适合我。
列表容器与外层div在同一个模块中定义:
render() {
return (
<div id="list_container">
<ListGroup>
<VirtualList
width='100%'
height={this.state.height}
itemCount={this.state.networks.length}
itemSize={50}
renderItem={({index, style}) =>
<ListGroupItem
onClick={() => this.updateNetwork(this.state.networks[index].ssid, this.state.networks[index].security)}
action>
{this.state.networks[index].ssid}
</ListGroupItem>
}
/>
</ListGroup>
<Modal/>
// ...
注意:
如果我这样做:
<p>{this.state.height}</p>
它不是0 只是空的,示例不起作用。
【问题讨论】:
-
$("#list_container") 是否返回正确的元素?
-
@ChaseDeAnda 抱歉,我不确定如何检查。我添加了一个 sn-p 来显示我定义它的位置。我该如何检查?
-
在您的
updateWindowDimensions方法中,您可以执行console.log($("#list_container"))。 -
或者只是打开您的开发工具并将 $("#list_container") 粘贴到控制台中。它应该返回您尝试测量的元素。
-
@ChaseDeAnda 它找到了对象,但它没有
.height()或.height的属性
标签: reactjs