【发布时间】:2019-04-30 11:30:43
【问题描述】:
我在 useEffect 挂钩中运行 setInterval 来循环一个函数,但是,我希望能够在应用延迟(间隔)之前先运行该函数一次。有没有办法在应用延迟之前在 useEffect 挂钩中运行该函数一次?
我曾尝试在 setInterval 函数之前在钩子内运行一次该函数,但它没有给我希望的结果。在 useEffect 挂钩之外运行函数也是如此。
const myText = props.text;
const textTimeout = 100;
const funTextInterval = textTimeout * myText.length
const [quickText, setQuickText] = useState([]);
const setDelay = (i) => {
setTimeout(() => {
myFunction();
, textTimeout * i);
};
useEffect(() => {
setInterval(() => {
for (let i = 0; i < myText.length + 1; i++) {
setDelay(i);
}
}, funTextInterval);
}, []);
我希望 forloop 在 setInterval 延迟开始之前运行一次,但延迟发生在 forloop 之前
【问题讨论】:
-
您确定延迟不是来自
setTimeout(),而是来自间隔吗? -
^^ 那。
setInterval()和setTimeout()的组合导致了您的问题。
标签: javascript reactjs react-hooks