Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript React Hook useEffect缺少依赖项:';室友';和';索特里德';。要么包含它们,要么删除依赖项数组react hooks/dep_Javascript_Reactjs_React Hooks - Fatal编程技术网

Javascript React Hook useEffect缺少依赖项:';室友';和';索特里德';。要么包含它们,要么删除依赖项数组react hooks/dep

Javascript 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

我没有在useEffect之外使用socketData函数,然后,我收到了警告。我想在不使用//eslint disable next行的情况下删除此警告。 我从服务器的父组件获取roomID和sotreID,socket是本地服务器url

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中显示警告