我使用react-virtualized ScrollSync
组件来同步几个固定标头的滚动 - 非常类似于example in the docs。
我的问题:是否可以向scrollTop
(或其子女)提供初始ScrollSync
值?我意识到更好的方法是在控制滚动位置的scrollToRow
组件上使用Grid
- 为了它的价值,我是为此目的使用scrollToColumn
。但是因为,纵向上,我只渲染一个非常高的单元格,scrollToRow
并不能提供所需的保真度。
我确实意识到这是对网格组件的一种稍微混淆的使用,但它作为一个水平的,无限加载的滚动条都可以很好地工作,同时允许我重用现有的组件。如果我可以设置一个初始scrollTop
,我就是金色的。
感谢。
答案 0 :(得分:3)
不幸的是,如果没有一点黑客攻击,目前还不支持。
首先,黑客攻击的原因:使用ScrollSync
(主Grid
)向同步Grid
s向一个方向滚动偏移。这意味着,即使ScrollSync
接受默认左/上偏移作为道具,它们也会被主Grid
的第一次渲染覆盖。我认为这可能是正确的做法,以避免反应虚拟化内部的丑陋。
但是,如果你想这样做,你可以在这样的应用程序代码中解决它:
class YourComponent extends Component {
render () {
// These are arbitrary
const defaultScrollLeft = 300
const defaultScrollTop = 500
return (
<ScrollSync>
{({ clientHeight, clientWidth, onScroll, scrollHeight, scrollLeft, scrollTop, scrollWidth }) => {
if (!this._initialized) {
scrollLeft = defaultScrollLeft
scrollTop = defaultScrollTop
this._initialized = true
}
return (
<div>
<Grid
{...otherSyncedGridProps}
scrollLeft={scrollLeft}
/>
<Grid
{...otherMainGridProps}
onScroll={onScroll}
scrollLeft={defaultScrollLeft}
scrollTop={defaultScrollTop}
/>
</div>
)
}}
</ScrollSync>
)
}
}