Javascript useEffect是否阻止呈现页面?

Javascript useEffect是否阻止呈现页面?,javascript,reactjs,settimeout,use-effect,Javascript,Reactjs,Settimeout,Use Effect,每次用户到达或重新加载页面时,我都想做一点加载时间。为此,我使用了一个useffect(),它有一个setTimeout(),并在1秒后将变量setLoading设置为false。但我的问题是,这个setTimeout是否会阻止函数的返回? 否则它是无用的,因为我希望这个useEffect允许页面加载html并几乎立即呈现它 const[isLoading,setLoading]=useState(true); useffect(()=>{ 常量计时器=设置超时(()=>{ 设置加载(假);

每次用户到达或重新加载页面时,我都想做一点加载时间。为此,我使用了一个useffect(),它有一个setTimeout(),并在1秒后将变量setLoading设置为false。但我的问题是,这个setTimeout是否会阻止函数的返回? 否则它是无用的,因为我希望这个useEffect允许页面加载html并几乎立即呈现它

const[isLoading,setLoading]=useState(true);
useffect(()=>{
常量计时器=设置超时(()=>{
设置加载(假);
}, 1000);
return()=>clearTimeout(计时器);

});不,根据定义它是非阻塞的

但是,如果要实现加载逻辑,
useffect
绝对是正确的工具

你只需要给它传递第二个参数

const[isLoading,setLoading]=useState(true);
useffect(()=>{
常量计时器=设置超时(()=>{
设置加载(假);
}, 1000);
}, []);

否,它不会阻止代码的执行。根据JS(事件循环)的代码执行计划,执行将把setTimer()回调推到回调队列并继续执行其他事情,一旦计时器过期,它将拾取setTimer()回调并执行它(仅当没有其他任务在执行时)。要了解事件循环,请查看Akshay Sahani的视频:
useffect
返回函数是一个清理函数,仅在组件卸载时运行。例如,组件在不到一秒钟的时间内装载然后卸载,您需要清理以清除超时,否则此更新状态将出现在已卸载的组件上(这将导致错误)。请检查
useLayoutEffect
谢谢您的回答。所以这不是进行加载屏幕的正确方法?