[英]pubnub removeListener doesn't trigger on useEffect return
雖然打開單個聊天完美無缺,但進入聊天,然后離開聊天屏幕並再次進入聊天會導致雙重消息傳遞,盡管將其置於 useEffect 的返回上,但聽眾並沒有被刪除我什至嘗試過這個解決方案線程: React Pubnub Chat。 消息復制或根本沒有消息
希望大家能幫我找出問題所在。 提前致謝!
useEffect(() => {
const listener = {
message: (envelope: any) => {
if (envelope) {
const message = {
channel: envelope.channel,
message: {
...envelope.message,
},
uuid: envelope.publisher,
timetoken: envelope.timetoken,
}
dispatch(setMessage(message))
// this log activates the same amount of times you entered and left the chat, because the listener isn't being removed
console.log('Message listener activated!')
}
// setLastTimeToken(message.timetoken)
},
}
pubnub.addListener(listener)
pubnub.setUUID(employer._id)
pubnub.fetchMessages(
{
channels: [ch],
count: 100,
},
(status, response) => {
if (response.channels[ch]) {
dispatch(setMessages(response?.channels[ch]))
} else {
dispatch(setMessages([]))
}
},
)
pubnub.subscribe({ channels: [ch] })
const usersInfo = channel.split('_')
if (channel != employer._id && usersInfo[1] !== 'job') {
const deeberId = usersInfo[0]
getCandidateById(deeberId).then(res => {
dispatch(setSelectedChatCandidate(res))
})
}
renderDisplayName()
return () => {
pubnub.removeListener(listener)
pubnub.unsubscribeAll()
}
}, [])
升級 PubNub JS SDK 修復了導致多次回調觸發的問題。 https://www.pubnub.com/docs/sdks/javascript/changelog#uv4342u
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.