簡體   English   中英

React componentDidUpdate:檢查是否狀態或道具更改導致更新?

[英]React componentDidUpdate: check wether state OR props change caused the update?

我有一個列表組件,其中有很多條目來自Redux商店的道具。 條目將進行轉換和過濾,並置於componentDidUpdate的狀態。 但是,當組件的內部狀態更改時,也會調用此函數。

因此,我現在正在檢查每個狀態更改(如果道具的條目已更改)。 對我來說,這似乎沒有必要,因為有時只有一個條目是不同的,整個列表需要與前一個列表進行比較。

我怎樣才能只為道具使用諸如componentDidUpdate類的東西?

我考慮過使用getDerivedStateFromProps()但是它說

此方法適用於狀態依賴於道具隨時間變化的罕見用例。

這對我的用例不利嗎? 我只是不認為這是難得的。

然后他們給出建議使用記憶來解決此類問題。 但是,據我所知,記憶化框架仍然必須檢查道具的差異。

您可以使用shouldComponentUpdate(nextProps,nextState)來比較道具

使用shouldComponentUpdate()可以讓React知道組件的輸出是否不受當前狀態或道具更改的影響。 默認行為是在每次狀態更改時重新呈現,並且在大多數情況下,您應該依賴默認行為。

當接收到新的道具或狀態時,在渲染之前應調用shouldComponentUpdate()。 默認為true。 初始渲染或使用forceUpdate()時不會調用此方法。

一旦安裝周期完成,shouldComponentUpdate()就會調用一次,而不是在渲染之前先調用componentWillMount()。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM