React Native:如何在底部呈现新消息?

kd12345

我刚刚在我的React本机应用程序中实现了socket.io,以实现1-1私人消息传递。

插座按要求正确工作,即。消息正在实时发送。但是我的问题是,当我尝试发送消息时,最新消息应该显示在底部时,它会添加到倒置的Flatlist的顶部。

这是我的代码:

const message = route.params.message;
const [messages, setMessages] = useState([]);
const [refreshing, setRefreshing] = useState(false);
const [text, setText] = useState('');
const [loading, setLoading] = useState(false);
const [error, setError] = useState(false);
const [socket, setSocket] = useState(null);
const { user } = useAuth();

useEffect(() => {
const newsocket =io.connect("http://192.168.1.103:9000")
setMessages(message.Messages)

newsocket.on('connect', msg => {
console.log(`user: ${user.id} has joined conversation ${message.id}`)
setSocket(newsocket)
newsocket.emit('subscribe', message.id);
});

newsocket.on("send_message", (msg) => {
console.log("this is the chat messages:", msg);
setMessages(messages => messages.concat(msg)) // I THINK PROBLEM IS HERE 
});

return(()=>newsocket.close());

}, []);

const onSend = (ConversationId,senderId,receiverId,message) => {
console.log("sent")
const to = (user.id===route.params.message.user1? 
route.params.message.user2:route.params.message.user1)
socket.emit('message', { to: to, from: user.id, message,ConversationId });
setText("")
messagesApi.sendMessage({ConversationId,senderId,receiverId,message});
};

const updateText=(text)=>{
setText(text);
}

return(
<Animated.FlatList
    inverted
    data={messages}
    keyExtractor={(item,index)=>index.toString()}
    extraData={messages} // add this    
    renderItem={({item,index})=>(
        <>
        <MessageDate_Time 
        text={moment(item.createdAt).fromNow()} 
        mine={item.senderId !== user.id}
        />
        <MessageBubble
        text={item.message}
        mine={item.senderId !== user.id}
        />
         </>
    )}
    />
)
莱里·格格扎兹

更改concatunshift

newsocket.on("send_message", (msg) => {
    setMessages(messages => messages.unshift(msg));
    // OR
    const newMessages = [msg, ...messages];
    setMessages(newMessages);
});

因此,您使用的是反向道具,因此消息是相反的,这就是为什么您需要在开头到结尾添加新消息的原因。有点令人困惑:))

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在 React Native 中显示底部导航上方的组件?

来自分类Dev

如何在 react-native 中呈现 JSON 对象

来自分类Dev

如何在 React Native 中呈现单选按钮的值?

来自分类Dev

如何在React Native中复制警告消息

来自分类Dev

如何在React Native中将React导航堆栈标头移动到屏幕底部?

来自分类常见问题

如何在React Native中将屏幕添加到自定义底部导航

来自分类Dev

如何在React Native中从底部将<View />滑入和滑出?

来自分类Dev

如何在React Native或Swift中实现IG TV底部滑动面板?

来自分类Dev

如何在React Native底部选项卡中处理后退按钮行为?

来自分类Dev

如何在React Native中删除材料底部标签的背景颜色

来自分类Dev

如何在React Native中创建具有复杂形状的底部标签栏

来自分类Dev

如何在React Native中将屏幕添加到自定义底部导航

来自分类Dev

react native:如何在状态更改时停止子组件的重新呈现?

来自分类Dev

如何在 react-native-router-flux 中呈现常见的页眉和页脚?

来自分类Dev

React-native Airbnb-Maps:如何在 airbnb 地图弹出框中呈现按钮?

来自分类Dev

如何在React中呈现动态表单

来自分类Dev

如何在react中呈现默认组件

来自分类Dev

如何从WebView发送消息到React Native?

来自分类Dev

React Native:如何在模拟器上复制错误消息?

来自分类Dev

聚焦时如何摆脱React Native Paper TextInput的底部边框

来自分类常见问题

如何在React Native底部选项卡中有条件地更改屏幕按钮?

来自分类Dev

如何在React Native底部选项卡中有条件地更改屏幕按钮?

来自分类Dev

React Native TouchableHighlight呈现空白

来自分类Dev

React Native:FlatList 不呈现

来自分类Dev

使用Redux时如何重新呈现FlatList React Native

来自分类Dev

使用Redux时如何重新呈现FlatList React Native

来自分类Dev

如何在React Native中安装React Native Maps?

来自分类Dev

React Native:如何在React Native中发送TextInput的值?

来自分类Dev

如何在React中呈现选中的单选按钮

Related 相关文章

  1. 1

    如何在 React Native 中显示底部导航上方的组件?

  2. 2

    如何在 react-native 中呈现 JSON 对象

  3. 3

    如何在 React Native 中呈现单选按钮的值?

  4. 4

    如何在React Native中复制警告消息

  5. 5

    如何在React Native中将React导航堆栈标头移动到屏幕底部?

  6. 6

    如何在React Native中将屏幕添加到自定义底部导航

  7. 7

    如何在React Native中从底部将<View />滑入和滑出?

  8. 8

    如何在React Native或Swift中实现IG TV底部滑动面板?

  9. 9

    如何在React Native底部选项卡中处理后退按钮行为?

  10. 10

    如何在React Native中删除材料底部标签的背景颜色

  11. 11

    如何在React Native中创建具有复杂形状的底部标签栏

  12. 12

    如何在React Native中将屏幕添加到自定义底部导航

  13. 13

    react native:如何在状态更改时停止子组件的重新呈现?

  14. 14

    如何在 react-native-router-flux 中呈现常见的页眉和页脚?

  15. 15

    React-native Airbnb-Maps:如何在 airbnb 地图弹出框中呈现按钮?

  16. 16

    如何在React中呈现动态表单

  17. 17

    如何在react中呈现默认组件

  18. 18

    如何从WebView发送消息到React Native?

  19. 19

    React Native:如何在模拟器上复制错误消息?

  20. 20

    聚焦时如何摆脱React Native Paper TextInput的底部边框

  21. 21

    如何在React Native底部选项卡中有条件地更改屏幕按钮?

  22. 22

    如何在React Native底部选项卡中有条件地更改屏幕按钮?

  23. 23

    React Native TouchableHighlight呈现空白

  24. 24

    React Native:FlatList 不呈现

  25. 25

    使用Redux时如何重新呈现FlatList React Native

  26. 26

    使用Redux时如何重新呈现FlatList React Native

  27. 27

    如何在React Native中安装React Native Maps?

  28. 28

    React Native:如何在React Native中发送TextInput的值?

  29. 29

    如何在React中呈现选中的单选按钮

热门标签

归档