ScrollToLocation在初始安装时不起作用

时间:2020-01-23 01:23:10

标签: react-native expo react-native-sectionlist

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

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

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

1 个答案:

答案 0 :(得分:1)

我发现最好的解决方案on this thread是使用onLayout来触发滚动:

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

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