无法访问useEffect挂钩中的更新状态

时间:2020-07-23 19:06:51

标签: reactjs react-hooks

我有一个节点服务器,它监听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内部的其他函数调用该函数,然后记录更新的值。谁能解释为什么?

1 个答案:

答案 0 :(得分:1)

这是因为您的useEffect没有依赖关系,这意味着仅在组件安装时调用它。我将添加videoId作为其依赖项。

还有一个旁注,如果您在此处发布loadVideo代码,那不会有什么害处:)