我有一个节点服务器,它侦听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
代码,那不会有什么坏处:(