第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

React中的狀態(tài)和道具有什么區(qū)別?

React中的狀態(tài)和道具有什么區(qū)別?

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

3 回答

?
飲歌長嘯

TA貢獻1951條經(jīng)驗 獲得超3個贊

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


道具與國家

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


道具

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

狀態(tài)是一個數(shù)據(jù)結(jié)構(gòu),在組件安裝時以默認值開始。它可能會隨著時間的推移而發(fā)生變化,主要是由于用戶事件。

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

改變道具和狀態(tài)

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

這個組件應(yīng)該有狀態(tài)嗎?

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

組件類型

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

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


查看完整回答
反對 回復 2019-08-23
  • 3 回答
  • 0 關(guān)注
  • 592 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號