【发布时间】:2021-11-01 10:34:29
【问题描述】:
我正在使用 socket.io 在 React 中创建一个聊天应用程序。我不需要以下 useEffect() 多次运行,并且此警告消息要求我解决的内容与我仅设置一次套接字消息处理程序的意图相冲突:
React Hook useEffect 缺少一个依赖项:'messages'。包括它或删除依赖数组。如果您在“handleMessages”调用中只需要“消息”,您也可以进行功能更新“handleMessages(m => ...)”。eslintreact-hooks/exhaustive-deps
export default function Group(props) {
const [_broadcastOptions, handleBroadcastOptions] = useState(false);
const [messages, handleMessages] = useState([]);
const textValue = useRef('');
const bottomScrollRef = useRef();
const socket = useRef();
useEffect(()=>{
console.log('bruh');
socket.current = io('http://0.0.0.0:3001');
socket.current.on('connect', ()=> {
console.log('socket connection status: ' + socket.current.connected);
socket.current.emit('enter-room', getRoomId(window.location.pathname));
});
socket.current.on('message', m => {
console.log('message received: ' + JSON.stringify(m));
handleMessages([...messages, m]);
});
}, []);
return (...);
}
编辑:我尝试在我的 handleMessages 函数中传递一个回调(功能更新,因为 react 调用它们),但我仍然收到警告。
[![在此处输入图片描述][2]][2]
【问题讨论】:
标签: javascript reactjs socket.io use-effect