我有一個HTML元素的子組件,它可以在點擊時從它的父函數中觸發一個回調。回調然後改變父組件的狀態。然後將更改後的狀態發回到在以下if語句條件中使用的父級。 toggle
,來自父級的道具,然後調度改變商店中的值的操作。然而,這個派發最終會改變商店,因此也是父組件中的其中一個道具,也會傳遞給子組件。如何防止componentWillUpdate導致無限循環?
因此,當我將它插入到我的代碼中時,我得到一個無限循環。
/* no state changes to the current component */
componentWillUpdate(nextProps) {
const {
// ... some props
toggle, // func
} = nextProps;
if (/* case 1 of 2*/)
toggle(true);
} else (/* case 2 of 2 */) {
toggle(false);
}
}
因爲onClick
觸發,在這上面的if語句依賴父母的狀態改變字段的回調,我不得不放棄if語句中componentWillUpdate
(或某些陣營API,我可以if語句執行一旦我確定父狀態的改變已經完成(相對於onClick
功能調用)
我想在點擊後觸發上述操作,我不希望它無限循環,我該怎麼辦?
但是'onClick'觸發的函數也是一個回調(一個道具),它改變父狀態。因此,我不確定React是否會中斷onClick並繼續回調,或者是否會完成onClick中的其餘代碼(如果我將代碼與onClick配合使用)。 – AlanH
發佈代碼的其餘部分 – Pineda
「onClick」可以改變狀態。在這一點上_maybe_也可以添加'toggle()'中包含的'state'變量(因爲該邏輯也依賴於'state')。因此,當調用toggle時,它不會導致另一個「狀態」更改並打破無限循環。 – Pineda