function Comp({}) {
const rand = Math.random();
useEffect(() => {
// do stuff
}, [rand])
}
每次Comp重新渲染rand都會有不同的值。會觸發useEffect嗎?
uj5u.com熱心網友回復:
依賴項陣列中的變數與它是一個state帶有 some 的集合這一事實無關setState。只要它在陣列中并且它發生變化,useEffect就會再次呼叫 's 回呼。現在,如何useEffect注意到這種變化?好吧,每當組件渲染時,它都會產生差異。并且只有state帶有 a 的集合setState才能重新渲染組件。
uj5u.com熱心網友回復:
每次重新渲染組件時,Math.random都會評估該方法,因此它將導致useEffect再次運行(除了rand已更改的例外)。
相反,如果它只是一個常量,它不會重新運行useEffect.
uj5u.com熱心網友回復:
如果您在 useEffect 中使用 console.log("hello"),您會看到您只看到兩個控制臺顯示“hello”(因為 componentWillMount 和 componentDidMount)。這意味著,只有當狀態變數的值已更改或傳遞給它的道具發生更改時,您的組件才會重新渲染(當然傳遞的道具必須是狀態,否則它不會重新渲染)。
結論:只有組件中state或props值的變化才會重新渲染組件。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/485830.html
標籤:javascript 反应 反应钩子 使用效果 使用状态
