我有一个节点服务器,它监听 load video
事件,然后发出 load
事件来加载视频。
我在客户端监听这个事件,如下所示:
useEffect(() => {
socketRef.current = io.connect('/');
socketRef.current.on("load", () => {
loadVideo();
})
}, []);
对于此示例,loadVideo
函数仅记录 videoID
的值,其设置如下:
<input type="text" placeholder="video link" value={videoID} onChange={e => setVideoID(e.target.value)} />
每次从 useEffect 内部执行 loadVideo
函数时,它都会记录初始状态,这是一个空字符串,但是如果我要从其他函数调用该函数,则该函数不是在 useEffect 中,然后记录更新的值。谁能解释一下这是为什么吗?
最佳答案
这是因为您的 useEffect
没有依赖项,这意味着它仅在组件安装时调用。我将添加 videoId
作为其依赖项。
顺便说一句,如果您在此处发布了 loadVideo
代码,那也没什么坏处:)
关于reactjs - 无法访问 useEffect Hook 内的更新状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63061448/