【发布时间】:2021-06-11 19:00:00
【问题描述】:
我正在将 web sockets 集成到 React with Django in back-end。
我可以发送消息,并从后端接收新消息。
问题是在发送了 3 或 4 条消息后,前面的消息在前端被新消息取代,但在后端一切正常,实际上刷新后一切正常。
如何正确更新这种情况下的状态?
编辑:
我现在发现的主要问题是,当我发送一个聊天时,状态会多次更新,并且它的长度每次都在变化,并且屏幕抖动很大。
切片
name: 'chat',
initialState: {
chatMessages: [],
}
reducers: {
setChatMessages(state, action) {
const chatmessages = action.payload;
return {...state, chatMessages:chatmessages};
},
}
聊天
const chatMessagesSelector = useSelector(selectChats);
const chatMessages = chatMessagesSelector?.chatMessages
chatSocket.onmessage = (e) => {
var data = JSON.parse(e.data)
var message = {message: data.message, user: data.user,
timestamp: data.timestamp};
//console.log(message)
let updatedMessages = [...chatMessages];
updatedMessages.push(message);
dispatch(setChatMessages(updatedMessages));
}
这是在updatedMessages 上方记录的chatMessages 对象。
Array(1)
0: {user: "testuser", message: "check!", timestamp: "2021-03-09T09:15:09.408717+01:00}
length: 1
【问题讨论】:
-
每 3 或 4 条消息后,有时对于其他用户,它会替换所有其他消息并仅显示当前消息
-
yes..
chatMessages来自减速器。我会更新提到它的问题。
标签: reactjs redux websocket react-redux