【发布时间】:2021-01-15 00:24:12
【问题描述】:
我目前正在开发一个 React Native 聊天应用程序,我正在尝试以传统方式显示聊天消息。我正在使用 Expo CLI 和 Socket.io,我的消息 FlatList 如下所示:
<FlatList
ref={chatRef}
data={messages}
keyExtractor={item => item._id}
showsVerticalScrollIndicator={false}
renderItem={renderItem}
onContentSizeChange={onContentSizeChange}
onEndReachedThreshold={0.2}
inverted
onEndReached={loadMore}
removeClippedSubviews={true}
/>
const onContentSizeChange = () => {
chatRef.current.scrollToOffset({ animated: true, offset: 0 })
}
我的聊天按预期工作并且显示良好,但每当我发送新消息时,它都会被附加到 FlatList 的顶部。
发送新聊天时,我向 reducer 发送一个操作,并添加如下消息:
{...}
case ADD_MESSAGE: return {
...state,
messages: [...state.messages, action.payload]
}
{...}
我想知道是否可以将新消息附加到 FlatList 的末尾并滚动到它的末尾。
注意:我的消息数组按最新到最旧
的顺序排列感谢任何可以帮助我的人!
【问题讨论】:
标签: react-native socket.io chat flatlist