reactjs - 无法访问 useEffect Hook 内的更新状态

标签 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 中,然后记录更新的值。谁能解释一下这是为什么吗?

最佳答案

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

顺便说一句,如果您在此处发布了 loadVideo 代码,那也没什么坏处:)

关于reactjs - 无法访问 useEffect Hook 内的更新状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63061448/

相关文章:

javascript - this.state.something 发生变异并引发问题

reactjs - 有没有办法使用 webpack 和 mocha 在我的单元测试中模拟 `process.env.NODE_ENV` ?

javascript - 如何在 React/JSX 文件中添加脚本标签?

javascript - 动态渲染数据并有条件渲染组件: React JS

javascript - 在 useState 钩子(Hook)回调中使用副作用可以吗?

reactjs - typescript 错误对象的类型为 'unknown'

javascript - React - 发出请求后如何重定向到另一个组件?

javascript - 如何将数组的每个元素添加到 React 状态

reactjs - React 的 useMemo 方法导致无效的 hook 调用

react-native - 是否使用 useState react 原生动画 => new Animated.Value()?