我想在我的应用程序中添加一个SectionList,以便它可以呈现到特定的部分(不是列表中的第一部分)。在componentDidMount上调用scrollToLocation不起作用;但是,添加一个调用scrollToLocation的按钮可以。是否有一个原因?
这是否归因于SectionList引用(我尝试了几种分配引用的方法,例如变量分配,函数分配,使用createRef等)?
这里是一个精简世博会小吃的链接,以说明我的意思:https://snack.expo.io/@bobbymoogs/scrolltolocation-on-componentdidmount。
答案 0 :(得分:1)
我发现最好的解决方案on this thread是使用onLayout
来触发滚动:
scrollToInitialPosition = () => {
this.scrollViewRef.scrollTo({ y: 100 });
}
...
<ScrollView
ref={(ref) => { this.scrollViewRef = ref; }}
onLayout={this.scrollToInitialPosition}
/>
请注意,还有许多其他建议使用setTimeout
,componentDidUpdate
,InteractionManager
等。但是,使用onLayout是唯一对我有用的建议(在我看来,最干净的。)