3 回答

TA貢獻(xiàn)1797條經(jīng)驗(yàn) 獲得超6個(gè)贊
這就是使用React.memo的意義所在,以防止在子組件的 props 不變時(shí)重新渲染它們。
React.memo 是一個(gè)高階組件。它類似于 React.PureComponent 但用于函數(shù)組件而不是類。
如果你的函數(shù)組件在給定相同的 props 的情況下呈現(xiàn)相同的結(jié)果,你可以將它包裝在對(duì) React.memo 的調(diào)用中,以便在某些情況下通過(guò)記憶結(jié)果來(lái)提高性能。這意味著 React 將跳過(guò)渲染組件,并重用上次渲染的結(jié)果。
const FunctionalComponent = React.memo<{initialValue: number}>({initialValue}) => {
const [timerValue, setTimerValue] = useState(initialValue)
console.log('Set State')
useEffect(() => {
console.log('UseEffects called')
setInterval(() => {
setTimerValue(timerValue - 1)
}, 1000)
}, [])
return <View><Text style={styles.textStyle}>{timerValue}
</Text></View>
};

TA貢獻(xiàn)1906條經(jīng)驗(yàn) 獲得超3個(gè)贊
簽出 React.memo,如果子組件的 props 沒有改變,女巫將阻止重新渲染
const FunctionalComponent = React.memo((props: any) => { .... } )

TA貢獻(xiàn)1993條經(jīng)驗(yàn) 獲得超6個(gè)贊
人們建議useEffect但它會(huì)在渲染后被調(diào)用。
改用useMemo:
useMemo(() => {
console.log('This is useMemo')
}, []);
添加回答
舉報(bào)