【发布时间】:2022-02-18 16:29:40
【问题描述】:
您好,只想点击 useEffect 一次,但它被调用了 2-3 次,我尝试将函数包装在另一个函数中,但代码开始停止,你们能帮忙
需要调用successHandler,但是它在n over的时候被调用了
const { successHandler } = props;
const [completed, setCompleted] = React.useState(10);
const fileType = getFileType(props.fileName);
React.useEffect(() => {
function progress() {
setCompleted(prevCompleted => {
if (prevCompleted >= 100) {
successHandler();
return 100;
}
return prevCompleted + 10; });
}
const timer = setInterval(progress, 500);
return () => { clearInterval(timer); };
}, [successHandler]);
【问题讨论】:
-
` const { successHandler } = props; const [完成,setCompleted] = React.useState(10); const fileType = getFileType(props.fileName); React.useEffect(() => { function progress() { setCompleted(prevCompleted => { if (prevCompleted >= 100) { successHandler(); return 100; } return prevCompleted + 10; }); } const timer = setInterval(进度, 500); return () => { clearInterval(timer); }; }, [successHandler]); `
-
删除
[successHandler]依赖并将其更改为[]如果您只想调用一次。
标签: reactjs react-hooks setinterval use-effect