当我收到来自套接字的消息时,函数触发一次,但在reducer内部,每次都要触发3-5次
useEffect(()=>{
socket.on('message', (data) => {
dispatch({
type: 'InsertMessage',
payload: { text: data.Message, sender: data.SenderSeries, timestamp: new Date(), ...data }
})
ScrollDown()
})
},[])
这里是我监听套接字case 'InsertMessage'的地方:
return [...state, action.payload];`
这是我所有的代码和我的套接字不发送两次我检查它
我在代码中也使用了useDB来调用同样的东西idk做什么
1条答案
按热度按时间vpfxa7rd1#
useEffect()
回调可能会被多次调用,从而导致为同一事件注册多个回调函数。这种情况特别发生在开发模式下,React故意多次调用效果回调来检测这样的bug。一种解决方案是从
useEffect()
回调返回一个cleanup函数。React将在设置新效果之前调用它。大概是这样的: