将本机ScrollView反应到默认位置

时间:2019-04-03 20:16:11

标签: react-native scrollview

我有一个主屏幕,带有水平滚动视图的女巫正在渲染带有项目的平面列表。 我有一些类别的抽屉菜单。每次单击菜单类别时,它只是从服务器获取数据,然后将其呈现到主屏幕。

当我第一次加载主屏幕时,滚动查看显示的项目,按预期方式,从左边的第一个项目开始,然后是第二个项目,第三个等等。

如果我滚动它,可以说到列表的中间,然后打开Menu并将不同的数据获取到同一屏幕,scrollView不会重置到初始位置,它仍然停留在中间。

我的问题是如何将“ scrollView”或“ flatlist”重置为初始位置(默认位置),因此,当我获取新数据时,无论从何处开始,它都应从左侧的第一个元素开始呈现它。

我将尝试在FlatList上进行引用

  ref={(ref) => { this.flatListRef = ref; }}

然后在componentDidMount

this.flatListRef.scrollTo({ animated: false, index: 0 });

但这不起作用(

1 个答案:

答案 0 :(得分:0)

尝试一下:

class YourComponent extends Component {
  constructor(props) {
    super(props);

    this.flatListRef = React.createRef();
  }

  componentWillReceiveProps() {
    this.flatListRef.current.scrollTo({ animated: false, x: 0, y: 0 });
  }

  render() {
      return (
          <FlatList ref={this.flatListRef} contentContainerStyle={{ flex: 1 }}>
                ...
          </FlatList>
      );
  }
}