Javascript React Hook useEffect缺少依赖项:';室友';和';索特里德';。要么包含它们,要么删除依赖项数组react hooks/dep
我没有在useEffect之外使用socketData函数,然后,我收到了警告。我想在不使用//eslint disable next行的情况下删除此警告。 我从服务器的父组件获取roomID和sotreID,socket是本地服务器urlJavascript React Hook useEffect缺少依赖项:';室友';和';索特里德';。要么包含它们,要么删除依赖项数组react hooks/dep,javascript,reactjs,react-hooks,Javascript,Reactjs,React Hooks,我没有在useEffect之外使用socketData函数,然后,我收到了警告。我想在不使用//eslint disable next行的情况下删除此警告。 我从服务器的父组件获取roomID和sotreID,socket是本地服务器url useffect(()=>{ 常量socketData=()=>{ 控制台日志('sotreId',sotreId); setReceiverID(索特里德); socketRef.current=插座; 控制台日志(套接字); socketRef.curr
useffect(()=>{
常量socketData=()=>{
控制台日志('sotreId',sotreId);
setReceiverID(索特里德);
socketRef.current=插座;
控制台日志(套接字);
socketRef.current.emit('mobileNumber',roomID);
navigator.mediaDevices.getUserMedia({video:true,audio:false})。然后(stream=>{
backgroundVideo.current.srcObject=流;
}).catch((错误)=>{
日志(“背景错误”,错误)
});
socketRef.current.on(“您的id”,(id)=>{
console.log(id);
设置你的id(id);
})
socketRef.current.on(“allUsers”(用户)=>{
console.log(用户);
设置用户(用户);
})
}
socketData();
}, []);
您应该在依赖项数组中添加roomId
和storeId
,如下所示:
useEffect(() => {
const socketData = () => {
console.log('sotreId', sotreId);
setReceiverID(sotreId);
socketRef.current = socket;
console.log(socket);
socketRef.current.emit('mobileNumber', roomID);
navigator.mediaDevices.getUserMedia({ video: true, audio: false }).then(stream => {
backgroundVideo.current.srcObject = stream;
}).catch((error) => {
console.log("background error", error)
});
socketRef.current.on("yourID", (id) => {
console.log(id);
setYourID(id);
})
socketRef.current.on("allUsers", (users) => {
console.log(users);
setUsers(users);
})
}
socketData();
}, [roomeId, storeId]);
它会向您发出警告,因为您的函数依赖于
roomID
和sotreId
,因此您应该将它们作为依赖项传递。我是react Hook的新手。是否可以在不在依赖项数组中添加依赖项的情况下删除警告。您可以将socketData包装在usecallback中,然后在useeffect中调用它,检查这篇文章,但我认为linter将在useCallback中显示警告