我有一个节点服务器,它监听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内部的其他函数调用该函数,然后记录更新的值。谁能解释为什么?
答案 0 :(得分:1)
这是因为您的useEffect
没有依赖关系,这意味着仅在组件安装时调用它。我将添加videoId
作为其依赖项。
还有一个旁注,如果您在此处发布loadVideo
代码,那不会有什么害处:)