不確定我是否在這里遺漏了一些東西,但是一個非常簡單的 while 回圈正在凍結頁面。
檢查:
控制臺記錄在 useEffect 中以檢查組件是否例外重新渲染,但事實并非如此。
function IterationComponent() {
const [c1, incrementC1] = useState(() => 0);
const [c2, incrementC2] = useState(() => 0);
useEffect(() => {
console.log(1)
});
function incrementC1Fn () {
incrementC1(prevValue => prevValue 1)
}
function incrementC2Fn () {
incrementC2(prevValue => prevValue 1)
}
const isEven = () => {
let i = 0;
while(i < 2); i
return c1 % 2 === 0;
}
return (
<>
<button onClick={incrementC1Fn}>C1 - {c1}</button>
<button onClick={incrementC2Fn}>C2 - {c2}</button>
<span>{isEven() ? 'Even' : 'Odd'}</span>
</>
)
}
每當我在 isEven 函式中添加 while 回圈時,頁面就會凍結,因為我無法單擊任何按鈕
注意:請不要問我為什么要這樣做,或者這樣做的目的是什么,或者我可以通過其他方式來提高性能。這只是為了我的理解,因為我想故意使 isEven 函式作業緩慢。這只是為了教育目的。但我認為這個簡單的 while 回圈不應該凍結頁面,除非我在這里做錯了什么。
uj5u.com熱心網友回復:
問題就在這條線上while(i < 2); i 。您應該將其更改為while(i < 2) i ;.
while(i < 2);將始終評估true哪個將無限執行并反過來凍結頁面。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/460656.html
標籤:javascript 反应 循环
下一篇:查找字串并替換為HTML
