滚动到位置在初始装载时不起作用



我想向我的应用程序添加一个 SectionList,以便它呈现到特定部分(这不是列表中的第一个部分(。在组件DidMount上调用scrollToLocation不起作用;但是,添加调用 scrollToLocation 的按钮确实如此。这有什么原因吗?

这可能是由于 SectionList 引用(我已经尝试了一些分配引用的方法,例如变量赋值、函数赋值、使用 createRef 等(?

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

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

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

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

相关内容

  • 没有找到相关文章

最新更新