Javascript 获取React中useEffect之外的变量的当前值
我从django服务器得到一个响应,然后我需要将时钟变量设置为true,因为我在组件中使用该变量Javascript 获取React中useEffect之外的变量的当前值,javascript,reactjs,components,Javascript,Reactjs,Components,我从django服务器得到一个响应,然后我需要将时钟变量设置为true,因为我在组件中使用该变量 let clock = false; useEffect(() => { switch (true) { ........ case dataParsed.type === "ClockInfo": { clock = true; }
let clock = false;
useEffect(() => {
switch (true) {
........
case dataParsed.type === "ClockInfo":
{
clock = true;
}
break;
}
};
}, []);
const [clock, setClock] = useState(false);
// ...
case dataParsed.type === "ClockInfo": {
setClock(true);
break;
}
时钟值没有正确更改,它总是显示为false。我知道这是因为每次react渲染组件时,它都会返回假值,所以如何才能正确执行
我尝试使用useRef,但根本没有帮助。在我的组件中,我有一个条件,当clock==true时开始工作。因为您试图在渲染输出中使用该值,所以必须使用state。设置状态是告诉react重新启动组件的唯一方法
let clock = false;
useEffect(() => {
switch (true) {
........
case dataParsed.type === "ClockInfo":
{
clock = true;
}
break;
}
};
}, []);
const [clock, setClock] = useState(false);
// ...
case dataParsed.type === "ClockInfo": {
setClock(true);
break;
}
ref可以让您在一个渲染到下一个渲染之间具有持久值,但它无法启动渲染,因此它不是适合您的情况的工具。如果可行,请尝试
import { useState } from 'react';
const [clock,setclock] = useState(false);
useEffect(() => {
switch (true) {
........
case dataParsed.type === "ClockInfo":
{
setclock(true);
}
break;
}
};
}, []);
添加在useEffect依赖项数组中解析的数据。。甚至当dataParse的值发生更改时,也会调用它
import { useState } from 'react';
const [clock,setClock] = useState(false);
useEffect(() => {
switch (true) {
........
case dataParsed.type === "ClockInfo":
{
setClock(true);
}
break;
}
};
}, [dataParsed]);
<Header word={catchword} socketRef={socketRef} clock={clock} />
从'react'导入{useState};
const[clock,setClock]=使用状态(false);
useffect(()=>{
开关(真){
........
案例dataParsed.type==“ClockInfo”:
{
设置时钟(真);
}
打破
}
};
},[dataParsed]);
我试过这个,它不起作用。在useEffect块之外,时钟仍然等于false。那么要么你的setClock(true)代码没有运行,要么你的log语句处于打印过时闭包值的位置。如果看不到更多的代码,就很难知道。我试过这个,它不起作用。在useEffect块之外,时钟仍然等于false。