HighLight / ScrollTo - React-Native 上的 ListView、ScrollView
HighLight / ScrollTo - ListView, ScrollView on React-Native
我正在玩一些react-native,我卡在了一个我自己想不通的阶段。我有一个项目列表,我想自动滚动到某个项目。
我知道我可以使用 ScrollView 和 contentOffset={{x:0,y:0}} 并设置和偏移,但是它会稍微复杂一点,因为我需要跟踪每个项目,我想知道是否有一种简单的方法来做到这一点,这样我就可以专注于 ListView 中的特定行。
libs 上有这样的东西吗?
ScrollView 不提供滚动到特定列表项的方法 - 但它确实提供了方法 scrollTo({x, y, animated})
.
如果您的列表项高度相同,您可以通过调用 scrollTo({y:itemIndex * ROW_HEIGHT})
.
使用它们实现滚动到特定项目
为了能够访问 ScrollView
实例,您需要使用 ref
属性 回调进行捕获:
<ScrollView ref={view => this._scrollView = view} />
并在其他地方设置滚动位置:
scrollToRow(itemIndex) {
this._scrollView.scrollTo({y:itemIndex * ROW_HEIGHT});
}
我已经发布了 react-native-scroll-into-view,一个为 React Native ScrollView 启用 "scrollIntoView" 功能的库。
对于 SectionList 等其他列表,您仍然可以使用其他答案中提到的项目索引。
我正在玩一些react-native,我卡在了一个我自己想不通的阶段。我有一个项目列表,我想自动滚动到某个项目。
我知道我可以使用 ScrollView 和 contentOffset={{x:0,y:0}} 并设置和偏移,但是它会稍微复杂一点,因为我需要跟踪每个项目,我想知道是否有一种简单的方法来做到这一点,这样我就可以专注于 ListView 中的特定行。
libs 上有这样的东西吗?
ScrollView 不提供滚动到特定列表项的方法 - 但它确实提供了方法 scrollTo({x, y, animated})
.
如果您的列表项高度相同,您可以通过调用 scrollTo({y:itemIndex * ROW_HEIGHT})
.
为了能够访问 ScrollView
实例,您需要使用 ref
属性 回调进行捕获:
<ScrollView ref={view => this._scrollView = view} />
并在其他地方设置滚动位置:
scrollToRow(itemIndex) {
this._scrollView.scrollTo({y:itemIndex * ROW_HEIGHT});
}
我已经发布了 react-native-scroll-into-view,一个为 React Native ScrollView 启用 "scrollIntoView" 功能的库。
对于 SectionList 等其他列表,您仍然可以使用其他答案中提到的项目索引。