我正在處理一個 for 回圈,該回圈從 530px 的 window.innerHeight 的 1 列開始,如果 window.innerHeight 增加 40,則增加 1。
這就是我現在所擁有的,但它每次都說有太多的重新渲染。有誰知道為什么?
let gridcolumns = 1;
useEffect(() => {
for (let i = 530; i < window.innerHeight; i = 40) {
gridcolumns = 1;
}
});
setColumnsAmount(gridcolumns);
uj5u.com熱心網友回復:
您需要將依賴項串列添加到您的 useEffect :
let gridcolumns = 1;
useEffect(() => {
for (let i = 530; i < window.innerHeight; i = 40) {
gridcolumns = 1;
}
setColumnsAmount(gridcolumns);
},[]);
uj5u.com熱心網友回復:
您的useEffect呼叫沒有依賴陣列,因此每次渲染后都會呼叫它的回呼。回呼然后執行setColumnsAmount,這會觸發重新渲染,觸發useEffect回呼,觸發重新渲染等。
您需要指定一個依賴陣列,說明需要更改的內容以使您想要運行回呼,或者根本不使用useEffect它并columnsAmount在事件回呼(可能是resize事件)中進行更改。
旁注:您可能可以將for回圈替換為const x = Math.floor(window.innerHeight / 40);然后做任何您想做的事情x(例如,gridColumns如果這確實是正確的事情,您可以將其添加到其中)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/476384.html
標籤:javascript 反应
