1

我想将 SectionList 添加到我的应用程序中,以便它呈现到特定部分(这不是列表中的第一部分)。在 componentDidMount 上调用 scrollToLocation 不起作用;但是,添加一个调用 scrollToLocation 的按钮可以。是否有一个原因?

这可能是由于 SectionList 引用(我尝试了几种分配引用的方法,例如变量分配、函数分配、使用 createRef 等)?

这是一个精简的世博小吃的链接,以说明我的意思:https ://snack.expo.io/@bobbymoogs/scrolltolocation-on-componentdidmount 。

4

1 回答 1

1

我发现这个线程上最好的解决方案是用来onLayout触发滚动:

scrollToInitialPosition = () => {
  this.scrollViewRef.scrollTo({ y: 100 });
}
...
<ScrollView
  ref={(ref) => { this.scrollViewRef = ref; }}
  onLayout={this.scrollToInitialPosition}
/>

请注意,还有很多其他使用setTimeout, componentDidUpdate,等的建议InteractionManager。但是使用 onLayout 是唯一对我有用的(在我看来也是最干净的)。

于 2020-04-02T20:58:00.560 回答