javascript - 在 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 时开始工作。
解决方案
由于您尝试在渲染输出中使用该值,因此您必须使用 state。设置状态是告诉 react 重新渲染组件的唯一方法。
const [clock, setClock] = useState(false);
// ...
case dataParsed.type === "ClockInfo": {
setClock(true);
break;
}
ref 可以让您从一个渲染到下一个渲染具有持久值,但它不能启动渲染,因此它不是适合您的情况的工具。
推荐阅读
- github - 是否有任何选项可用于在只有有限存储库访问的 Azure Devops 上创建服务连接?
- laravel-5 - 更新了数据库中的图像存储,但不是 laravel 中的文件夹
- ios - 从 NSKeyedUnarchiver.unarchiveObject 到 PropertyListDecoder().decode 的错误
- r - 如何在图中表示函数的效率
- javascript - 是否可以在没有活动电子表格的情况下每天使用时间驱动触发器运行函数?
- mysql - 在 Laravel 中使用不同的查询左连接
- c# - 如何使用 Microsoft Graph API 发送邀请电子邮件
- python - 在列表中搜索确切的字符串
- react-native - 打开和关闭抽屉时如何更新所有头文件中的内容
- java - 无法在改造 Android Studio 中得到回应