Ben*_*LLE 9 javascript reactjs react-hooks
我正在使用 useEffect 来显示 UI 加载...但仅在 250 毫秒之后。它有效......但我真的不明白为什么,特别是如何以及何时 useEffect 调用返回的函数(清除超时)。
嗯......我不确定这是否完美。有时应该出现“正在加载...”消息,但事实并非如此。
const [loadingAfterShortTime, setLoadingAfterShortTime] = useState(false);
useEffect(() => {
setLoadingAfterShortTime(bool => false);
if (myDepandanceToTrigTheLoadingWord === true) {
const id = setTimeout(() => {
setLoadingAfterShortTime(bool => true);
}, 250);
return () => {
clearTimeout(id);
};
}
}, [myDepandanceToTrigTheLoadingWord]);
Run Code Online (Sandbox Code Playgroud)
ste*_*bdh 11
@Powell Ye 提供的解释很好,但是在谈到重新渲染时(例如,当道具更改时)有一些错误的信息
考虑一些具有以下内容的简单组件
useEffect( () => {
console.log('Effect is applied')
//some logic
return () => {
console.log('cleaning up')
//cleanup logic
}
})
return (<>
{console.log('rendering...')}
</>)
Run Code Online (Sandbox Code Playgroud)
说在更改中传递的道具,您可能认为它是这样的
但是,实际上会发生以下情况
也就是说,清理功能在新的渲染/绘制之后运行,但在应用“新”效果之前,文档可能对此有点含糊不清
在执行下一个效果之前清除上一个效果
这样做是出于性能原因 => 以便渲染不会延迟(有时对我来说也令人沮丧)
| 归档时间: |
|
| 查看次数: |
2746 次 |
| 最近记录: |