所以我在RN 49.3, 我正在寻找一种方法来获取virtualizedList上的滚动位置或项目索引!
PS:当我打开VirtualizedList.js的源代码时,似乎有props.onScrollEndDrag& props.onScroll
答案 0 :(得分:0)
我们使用的是另一种方法。它自那以后发生了很大的变化,但我可以用最初的方法帮助你。我们在列表中添加了onScrool
param。我们将event.nativeEvent.contentOffset.y
捕获到状态或规范内的一些变量。我们使用了redux。当用户离开屏幕时,我们将此值保存在数据库中。第二部分是从componentDidMount
中的db加载此值。您只需将ref
放入列表组件,然后调用this.refs.myRef.scrollTo({ x: 0, y: loadedValue, animated: false });
捕捉滚动
render() {
return (
<VirtualizedList
ref='myRef'
onScroll={event => {
this.scroll = event.nativeEvent.contentOffset.y;
}}
...
/>
);}
退出时保存
componentWillUnmount() {
AsyncStorage.setItem(key, this.scroll);
}
安装后加载
componentDidMount() {
AsyncStorage.getItem(key)
.then(y => {
this.refs.myRef.scrollTo({ x: 0, y, animated: false });
});
}
我认为最佳方法是在redux中处理它,并将此组件与列表连接到商店。我提到保存到db,因为我们保存位置供以后使用,这只是可选的,取决于您的要求。 你也可以使用状态,但是你需要处理不必要的更新