考虑以下渲染的ReactJS组件:
render () {
return (
<div className='ux-table' onScroll={this.handleScroll}>
<table ref='mainTable>
<Header>
**Rows data here***
</table>
</div>
);
还有Header
子组件:
render () {
return (
<thead ref='tableHeader'>
<tr> ** column data here ** </tr>
</thead>
);
}
我需要在主组件处理中获取主组件 (mainTable
) 的 scrollTop
位置,并将其设置为子 Header 组件 (tableHeader
),如下所示的 Javascript 代码:
document.querySelector('.ux-table').onscroll = function (e) {
// called when the window is scrolled.
var topOfDiv = Math.max(document.querySelector(".ux-table").scrollTop - 2, 0);
document.getElementsByTagName('thead')[0].style = "top:" + topOfDiv + "px;";
}
我的主组件尝试:
handleScroll = (event) => {
var topOfDiv = Math.max(this.refs.mainTable.scrollTop - 2, 0);
this.refs.tableHeader.scrollTop = topOfDiv;
}
第一行中,this.refs.mainTable.scrollTop
返回零 (0)。在第二行中,由于无法直接访问子组件,因此出现错误。
简而言之,如何:
a) 使用 ref
读取和设置 React 组件的 scrollTop
属性
b) 从父组件的 ref
获取子组件的访问权限
感谢您的帮助。
ref
的原因... - Mendes