我試圖了解在組件函式中具有副作用與在沒有傳入依賴陣列的效果中具有副作用之間的實際區別(因此應該在每次渲染時觸發)。據我觀察,它們都以相同的頻率運行。我意識到效果允許在適當的時間進行清理,但我只是對清理不是一個因素的場景感到好奇。
下面的 CodePen 顯示了我在說什么。

React 函陣列件的整個函式體就是“渲染”函式。正如你在圖中看到的,or body 中的任何無意的副作用render都將在“渲染階段”發生,React 可以暫停、中止或重新啟動(即再次運行)。請注意,“渲染階段”是純粹的并且沒有副作用。
“提交階段”組件可以使用 DOM 并運行副作用。
為什么這很重要?怎么區分。?
React 實際上附帶了一個
請注意,意外效果加倍。

代碼:
const externalValue1 = { count: 0 };
const externalValue2 = { count: 0 };
function EffectVsFunctionQuestion() {
const [state, setState] = React.useState(0);
React.useEffect(() => {
externalValue1.count ;
console.log("incremented within hook", externalValue1.count);
});
externalValue2.count ;
console.log("incremented within component function", externalValue2.count);
return (
<button type="button" onClick={() => setState((c) => c 1)}>
Render
</button>
);
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/453030.html
標籤:javascript 反应 反应钩子 使用效果
