【发布时间】:2020-07-19 16:10:29
【问题描述】:
我制作了一个聊天应用程序,并使用平面列表来呈现消息。但是问题是每次加载页面时都尝试滚动到屏幕末尾,但它失败了。我试过倒置的道具,但什么也没发生,只有列表倒置了。
甚至使用 ref 让它自动滚动到底部,但什么也没发生。
<FlatList
ref="flatList"
onContentSizeChange={() =>
this.refs.flatList.scrollToEnd()}
contentContainerStyle={{
marginBottom:
verticalScale(200)
}}
style={styles.list}
data={this.state.messages}
/>
如何让它在渲染时滚动到屏幕底部或滚动到消息的最后一个索引?
(更新)
这是我使用的属于 native-base 的 <Content/> 组件的问题。在删除并用<View/> 替换它后,它工作得非常好。
此外,对于基于聊天的应用,Flatlist 中的 inverted 属性是正确实现的方法。
我在下面的答案中添加了我设法滚动的方式。如果您只是希望您的应用显示列表中的最后一项并停留在那里,您可以使用inverted
【问题讨论】:
-
你使用的是哪个版本的 react-native?我在一个新的、空的 RN 0.62 项目中尝试了以下两个示例:gist.github.com/mlisik/27165a6cf538d5ce3591d1da16afdbf5 它们都按预期工作(这表明您的代码也应该如此)。旁注:我不认为您真的想在每次收到新消息时都滚动到底部。只有当用户已经向下滚动时才会发生这种情况(否则他们可能无法阅读过去的消息) - 这种情况实际上是通过
invertedFlatList 开箱即用的。 -
这是我包装平面列表的内容组件的问题。通过用视图替换它来修复它。非常感谢您宝贵的时间和帮助。
标签: react-native react-native-flatlist