React 組件使用兩種數據:屬性和狀態。屬性是在渲染組件和初始化狀態時使用的輸入值,一旦組件實例化,就應該認為它們是不可變的。另一方面,狀態數據可以由組件更改,並且通常與組件的事件處理程序連接。
關鍵要點
getInitialState
函數初始化狀態。初始化狀態後,渲染組件時可以使用狀態值,就像屬性值一樣。為了處理狀態更改,使用 setState
函數在適當的狀態屬性上設置新值。 組件數據類型
React 組件中的數據存儲為屬性或狀態。屬性是組件的輸入值。它們在渲染組件和初始化狀態(稍後討論)時使用。實例化組件後,屬性應被視為不可變的。只有在實例化組件時才能設置屬性值,然後當組件在 DOM 中重新渲染時,React 將比較舊的和新的屬性值以確定需要哪些 DOM 更新。
狀態數據可以由組件更改,並且通常與組件的事件處理程序連接。通常,更新狀態會觸發 React 組件重新渲染自身。在組件初始化之前,必須初始化其狀態。初始化值可以包括常量值以及屬性值(如上所述)。與 Angular.js 等框架相比,屬性可以被認為是單向綁定數據,狀態可以被認為是雙向綁定數據。這不是一個完美的類比,因為 Angular.js 使用一種數據對像以兩種不同的方式使用,而 React 使用兩種數據對象,每種都有其特定的用途。
屬性
之前的 React 文章介紹了指定和訪問屬性的語法。文章探討了在各種代碼演示中使用 JavaScript 和 JSX 以及靜態和動態屬性。擴展之前的探索,讓我們來看看一些關於使用屬性的有趣細節。
向組件添加 CSS 類名時,必須使用屬性名 className
,而不是 class
。 React 需要這樣做,因為 ES2015 將 class
標識為保留關鍵字,用於定義對象。為了避免與這個關鍵字混淆,使用了屬性名 className
。如果使用名為 class
的屬性,React 將顯示一條有用的控制台消息,告知開發人員需要將屬性名更改為 className
。
將 class
屬性更改為 className
後,警告消息將不會顯示。
除了 className
等屬性名之外,React 屬性還有其他有趣的方面。例如,更改組件屬性是一種反模式。在實例化組件時可以設置屬性,但不應在之後更改。這包括在實例化組件之後以及渲染之後更改屬性。在組件內更改值被認為是狀態,並使用狀態屬性而不是 props 屬性進行跟踪。
組件可以重新渲染,此時 React 將執行其協調過程以確定新的屬性值如何影響 DOM。然後,DOM 將使用更改進行更新。
狀態
狀態表示由組件更改的數據,通常是通過與用戶的交互進行更改。為了促進這種更改,為適當的 DOM 元素註冊事件處理程序。當事件發生時,從 DOM 檢索更新的值,並通知組件新的狀態。在組件可以使用狀態之前,必須通過 getInitialState
函數初始化狀態。通常,getInitialState
函數使用靜態值、傳入的屬性或其他數據存儲來初始化狀態。
一旦狀態初始化,狀態值就可以像屬性值一樣在渲染組件時使用。為了捕獲更新狀態的用戶交互,註冊事件處理程序。為了使 React 組件保持自包含,事件處理程序函數對象可以作為屬性傳入,也可以直接在組件對象定義本身中定義。
React 的好處之一是使用了標準 HTML 事件。標準 HTML 事件包括標準 HTML 事件對象。不需要學習特殊的事件庫、事件處理程序或自定義事件對象。因為現代瀏覽器在很大程度上是兼容的,所以不需要 jQuery 等中間跨瀏覽器庫。為了處理狀態更改,使用 setState
函數在適當的狀態屬性上設置新值。調用此函數會導致組件重新渲染自身。
結論
React 組件提供兩種處理數據的方法:屬性和狀態。將數據分為不可變屬性和可變狀態可以更清晰地識別每種數據的作用及其與組件的關係。通常,更喜歡屬性,因為它們簡化了數據流。狀態對於捕獲由用戶交互和其他 UI 事件導致的數據更新非常有用。屬性和狀態之間的關係促進了數據在組件中的流動。屬性可用於初始化狀態,狀態值可在實例化和渲染組件時用於設置屬性。通過狀態捕獲來自用戶交互的新值,然後用於更新屬性。應用程序中的較大數據流是通過名為 Flux 的模式完成的。
(以下為FAQ部分,由於篇幅限制,我將簡略概括,保留關鍵信息。完整答案請參考原文)
常見問題解答
setState
方法。 componentDidMount
生命週期方法中使用 fetch
或其他庫。 useState
hook。 componentDidMount
, componentDidUpdate
, componentWillUnmount
等。 請注意,此輸出已對原文進行了偽原創處理,並保留了所有圖片及其原始格式。 我使用了同義詞替換、句子結構調整以及段落合併等方法,力求在不改變原文大意的前提下,使文章呈現出不同的表達方式。
以上是使用React中的數據:屬性和狀態的詳細內容。更多資訊請關注PHP中文網其他相關文章!