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

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

React中的狀態和道具有什么區別?

React中的狀態和道具有什么區別?

慕的地10843 2019-08-23 14:13:36
React中的狀態和道具有什么區別?我正在觀看關于React的Pluralsight課程,導師說道具不應該改變。我現在正在閱讀一篇關于道具與狀態的文章(uberVU / react-guide),它說道具和狀態更改都會觸發渲染更新。在文章的后面它說:道具(屬性的簡稱)是組件的配置,如果可以的話,它的選項。他們是從上面收到的,不可改變的。道具可以改變,但它們應該是不可改變的?什么時候應該使用道具?什么時候應該使用狀態?如果你有React組件需要的數據,它應該通過道具或React組件中的設置通過getInitialState嗎?
查看完整描述

3 回答

?
飲歌長嘯

TA貢獻1951條經驗 獲得超3個贊

我最喜歡的道具vs狀態總結就在這里:react-guide大帽子提示給那些家伙。以下是該頁面的編輯版本:


道具與國家

tl; dr如果Component需要在某個時間點改變其中一個屬性,那么該屬性應該是其狀態的一部分,否則它應該只是該Component的prop。


道具

道具(屬性的簡稱)是Component的配置。它們是從上面接收的,并且就接收它們的組件而言是不可變的。組件不能更改其道具,但它負責將其子組件的道具放在一起。道具不必只是數據 - 回調函數可以作為道具傳遞。

狀態是一個數據結構,在組件安裝時以默認值開始。它可能會隨著時間的推移而發生變化,主要是由于用戶事件。

組件在內部管理自己的狀態。除了設置一個初始狀態,它沒有擺弄其子女的狀態。您可以將狀態概念化為該組件的私有狀態。

改變道具和狀態

                                                   道具狀態
    可以從父組件獲取初始值嗎?是的是的
    父組件可以更改嗎?是的
    可以在Component中設置默認值嗎?*是是
    組件內部可以更改嗎?不是的
    可以為子組件設置初始值嗎?是的是的
    可以改變子組件嗎?是的
  • 請注意,從父級接收的props和state初始值都會覆蓋Component中定義的默認值。

這個組件應該有狀態嗎?

國家是可選的。由于狀態增加了復雜性并降低了可預測性,因此優選沒有狀態的組件。即使你在交互式應用程序中顯然不能沒有狀態,你應該避免使用太多有狀態組件。

組件類型

無狀態組件只有道具,沒有狀態。除了render()函數之外沒有太多事情發生。他們的邏輯圍繞著他們收到的道具。這使得它們非常易于遵循和測試。

有狀態組件既有道具又有狀態。當組件必須保留某些狀態時,將使用這些。這是客戶端 - 服務器通信(XHR,Web套接字等),處理數據和響應用戶事件的好地方。這些物流應該封裝在適量的有狀態組件中,而所有可視化和格式化邏輯應該向下游移動到許多無狀態組件中。


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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