亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

反應功能性無狀態組件,PureComponent,Component;有什么區別

反應功能性無狀態組件,PureComponent,Component;有什么區別

皈依舞 2019-10-14 10:22:14
從React v15.3.0開始,我們有了一個名為PureComponent的新基類,以擴展內置的PureRenderMixin。我了解的是,在幕后,它對內部的道具進行了比較淺的比較shouldComponentUpdate。現在,我們有3種方法來定義React組件:功能性無狀態組件,不擴展任何類擴展PureComponent類的組件擴展Component類的常規組件一段時間以前,我們曾經將無狀態組件稱為“純組件”,甚至稱為“啞組件”。似乎“純”一詞的整個定義現在已經在React中改變了。盡管我了解這三者之間的基本區別,但仍不確定何時選擇。另外,每種性能對性能有何影響和權衡?更新:這些是我希望得到澄清的問題:我應該選擇將簡單的組件定義為功能性的(出于簡化的目的)還是擴展PureComponent類的(出于性能的考慮)?我為失去的簡單性而獲得了真正的性能提升嗎?Component當我總是可以使用PureComponent以獲得更好的性能時,是否需要擴展常規類?
查看完整描述

3 回答

?
慕田峪9158850

TA貢獻1794條經驗 獲得超7個贊

我不是反應超常的天才,但據我了解,我們可以在以下情況下使用每個組件

  1. 無狀態組件- 這些組件沒有生命周期,因此應在呈現父組件的重復元素時使用這些組件,例如呈現僅顯示信息且沒有任何動作要執行的文本列表。

  2. 純組件-這些是具有生命周期的項目,并且在給出一組特定的道具時,它們將始終返回相同的結果。當顯示結果列表或不包含復雜子元素的特定對象數據時,可以使用這些組件,并用于執行僅影響自身的操作。這樣的顯示用戶卡列表或產品卡列表(基本產品信息),并且用戶只能執行的操作是單擊以查看詳細信息頁面或將其添加到購物車。

  3. 普通組件或復雜組件-我使用了術語“復雜組件”,因為它們通常是頁面級組件,由許多子組件組成,并且由于每個子組件都可以以自己獨特的方式運行,因此您不能百分百確定它會在給定狀態下呈現相同的結果。正如我通常所說的,這些應該用作容器組件


查看完整回答
反對 回復 2019-10-14
?
慕萊塢森

TA貢獻1810條經驗 獲得超4個贊

  • React.Component是默認的“常規”組件。您可以使用class關鍵字和聲明它們extends React.Component。將它們視為具有生命周期方法,事件處理程序和任何方法的類。

  • React.PureComponent是使用功能對其和進行淺表比較的函數React.Component實現的。你必須使用,如果你知道的組件具有改變的道具或狀態嵌套的數據,你想重新呈現。因此,如果當您作為道具傳遞或設置為狀態的數組或對象發生變化時需要重新渲染組件,則它們并不是很好。shouldComponentUpdate()propsstateforceUpdate()

  • 功能組件是沒有生命周期功能的組件。它們據說是無狀態的,但是它們是如此干凈整潔,以至于我們現在有了鉤子(自React 16.8起),因此您仍然可以擁有狀態。所以我想它們只是“干凈的組件”。


查看完整回答
反對 回復 2019-10-14
  • 3 回答
  • 0 關注
  • 972 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號