[英]Stop Re-rendering a particular View in react native
如何在狀態發生變化時重新渲染特定視圖? 我正在使用來自react-native-timer-countdown的Timer倒計時組件。 結果是在到期后,我正在設置一個新狀態。 所以當有一個新的狀態時,它就會重新出現。 所以計時器從頭開始。
圖書館本身建議使用兩個獨立的組件。 但是,我覺得這不是一件好事。 有沒有辦法在完成后停止計時器重啟(即使在狀態改變時)?
我的代碼:
<View>
<TimerCountdown
initialMilliseconds={100 * 60}
onTick={(milliseconds) => console.log("tick", milliseconds)}
onExpire={() => this.setState({ disabled: false })}
/>
</View>
OnExpire,有一個setstate再次重啟計時器。 請建議
不確定你想要達到什么目的。 我想你可以選擇幾個:
PureComponent
進行TimerCountdown
(或實現shouldComponentUpdate
) React Native的一個好習慣是擁有一個父組件,有時稱為智能組件,通常是基於類的組件,
它的工作是編輯 - 獲取數據並做出任何邏輯決策。 - 相應地渲染子組件。
這些子組件有些人稱之為Dumb Component ,通常是一個表示組件或一個功能組件,從它的名稱起作用的工作只是改變一些內容只是改變它的道具收到的
因此,我建議您封裝不希望受功能組件中狀態更改影響的JSX。 這樣,如果狀態的變化沒有作為支柱傳遞給它,它將不會被渲染。
在下面的代碼中,如果state
中的field2已更改,則不會重新PresentationalComponent
class ParentComponent {
render() {
const { field1, field2 } = this.state;
return (
<View>
...
<PresentationalComponent prop1={field1} />
...
</View>
);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.