Javascript 如何定期重新渲染react组件
出于某种原因,我将不在这里解释,我有一个react组件,每次完成渲染时都需要重新渲染该组件,而不超过最大渲染堆栈深度 我已尝试在我的Javascript 如何定期重新渲染react组件,javascript,reactjs,typescript,Javascript,Reactjs,Typescript,出于某种原因,我将不在这里解释,我有一个react组件,每次完成渲染时都需要重新渲染该组件,而不超过最大渲染堆栈深度 我已尝试在我的useffect侦听器中设置一些状态,以强制组件重新渲染,但它一直超过最大堆栈大小 还有别的办法吗?我可能会这样做: const [time, setTime] = useState(Date.now()); useEffect(() => { let requestId; const update = () => {
useffect
侦听器中设置一些状态,以强制组件重新渲染,但它一直超过最大堆栈大小
还有别的办法吗?我可能会这样做:
const [time, setTime] = useState(Date.now());
useEffect(() => {
let requestId;
const update = () => {
setTime(Date.now());
requestId = window.requestAnimationFrame(update);
}
update();
return () => {
window.cancelAnimationFrame(requestID);
};
}, []);
这样,每次浏览器准备重新绘制时,您都会触发更新(因此不是“立即”进行,而是感觉像是这样)。它不会产生一个巨大的堆栈
作为旁注,您不想在[]内传递任何内容。如果您在括号中传递
时间
,则意味着每次时间值发生变化时都运行效果,也就是说,这不是我们想要的。它已经是一个“循环”,所以我们只需要在装载时运行一次,然后在卸载组件时清除更新循环。这听起来像是性能噩梦,可能是错误的解决方案