使用react-virtualized
,当您滚动list
并设置相同的scrollToIndex
时,它不会滚回到同一索引。scrollToIndex不滚动列表在React虚拟化列表中
有没有办法将列表重置回位置?
使用react-virtualized
,当您滚动list
并设置相同的scrollToIndex
时,它不会滚回到同一索引。scrollToIndex不滚动列表在React虚拟化列表中
有没有办法将列表重置回位置?
这是因为道具没有改变。您可以使用scrollToCell或scrollToRow方法(取决于您使用网格还是列表/表)来重新滚动到相同的索引。
由于@brianvaughn也说过,List不再滚动到索引,因为对react-virtualized list组件的支持没有改变。
因为默认情况下所有react-virtualized
组件使用shallowCompare
,以避免重新绘制,除非props
或state
已经改变。在更新发生之前,组件不会重新渲染。
解决这个问题的方法是让react-virtualized
知道外部事件发生了变化。这可以通过几种不同的方式来完成。
也是它,你有两种方式可以让react-virtualized
知道事情有了变化
的文件中所提及直通道具
即使shallowCompare方法将检测更改任何道具,他们没有声明为propTypes。这意味着您还可以通过影响单元格渲染的其他属性来确保检测到更改。所以你可以通过额外的道具改变,当你发起一个事件时,virtualized
列表不会改变任何东西。
<List
{...listProps}
sortBy={sortBy}
/>
公共方法
电网和收集组件可以被强制使用forceUpdate
重新呈现。对于表和列表,您需要调用forceUpdateGrid
以确保内部网格也被更新。
因此,无论何时您希望更新scrollToIndex
,如果它的值没有从先前的值改变,您可以在列表上调用forceUpdateGrid
。
话虽如此,它可能并不是最好的选择,因为如果scrollToIndex
没有改变,这是另一个强制滚动事件的选项,这是scrollToRow
选项。但是它需要您想要滚动的行才可见。它的不是,你将无法使用它。
scrollToRow(指数:数)
确保行是可见的。此方法可用于安全地向后滚动 到用户已滚动的单元格,即使之前滚动到 也是如此。