首页 > 解决方案 > 在 React 中获取 useEffect 之外的变量的当前值

问题描述

我收到了来自 django 服务器的响应,之后我需要将时钟变量设置为 true,因为我在组件中使用了该变量。

let clock = false;
useEffect(() => {
      switch (true) {
        
      ........

        case dataParsed.type === "ClockInfo":
          {
            clock = true;
          }
          break;
      }
    };
  }, []);
<Header word={catchword} socketRef={socketRef} clock={clock} />

时钟值没有正确改变,它总是显示为假。我知道这是因为每次 react 渲染组件时它都会返回 false 值,那么我该如何正确地做到这一点?

我尝试使用 useRef,但它根本没有帮助。在我的组件中,我有一个条件在时钟 == true 时开始工作。

标签: javascriptreactjscomponents

解决方案


由于您尝试在渲染输出中使用该值,因此您必须使用 state。设置状态是告诉 react 重新渲染组件的唯一方法。

const [clock, setClock] = useState(false);
// ...
  case dataParsed.type === "ClockInfo": {
    setClock(true);
    break;
  }

ref 可以让您从一个渲染到下一个渲染具有持久值,但它不能启动渲染,因此它不是适合您的情况的工具。


推荐阅读