React Native VirtualizedList获取Scroll并滚动到位置

时间:2017-10-12 16:22:00

标签: react-native

所以我在RN 49.3, 我正在寻找一种方法来获取virtualizedList上的滚动位置或项目索引!

PS:当我打开VirtualizedList.js的源代码时,似乎有props.onScrollEndDrag& props.onScroll

1 个答案:

答案 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,因为我们保存位置供以后使用,这只是可选的,取决于您的要求。 你也可以使用状态,但是你需要处理不必要的更新