2.元件和元素
元素(element)
首先需要了解的就是React的元素,因為元素是React中最小的建造部件,你所看到的網頁內容也就是由各種元素所組成的。React的元素在作用上來講和HTML的DOM是一致的,但從本質上來看,React DOM是一種JavaScript的物件,它是通過一個樹狀結構的JS物件來模擬DOM樹。
React DOM又稱之為Virtual DOM,它在React中的作用很大。我們都知道React很快,很輕。而它之所以如此的原因便在於Virtual DOM。在React DOM內部會進行一套高效率的Diff演算法,在應用的資料改變之後,React會盡力少地比較,然後根據虛擬DOM只改變真實DOM中需要被改變的部分。React也藉此實現了它的高效率,高效能。除此之外,react DOM還有其他的一些作用,獨立分離出來的一層邏輯層,為react涉足於其他的領域提供了支援(譬如ReactNative,ReactVR 等)
React元素是不能突變的,也就是說不能更改它的子元素和任何屬性,它的每一個元素都像電影裡面的一頻。更新 UI 的唯一方法是建立一個新的元素,並將其傳入ReactDOM.render()方法。
元件
元件在官方文件的解釋是:是指在UI介面中,可以被獨立劃分的、可複用的、獨立的模組。
React 元件非常簡單。我們可以認為它們就是簡單的函式,接受 props 和 state (後面會討論) 作為引數,然後渲染出 HTML。其實就類似於JS當中對function函式的定義,它一般會接收一個名為props的輸入,然後返回相應的React元素,再交給ReactDOM,最後渲染到螢幕上。
最簡單的建立一個元件的方法就是直接建立一個函式:
// 普通函式式
function Welcome(props) {
return <h1>Hello, {props.name}</h1>;
}
// 箭頭函式式
const Title = props => <h1>Hello, {props.name}</h1>
上面的寫法被稱之為函式式元件。同樣的,我們也可以使用ES6中的class語法來定義一個元件:
class Welcome extends React.Component {
render() {
return <h1>Hello,{this.props.name}</h1>;
}
}
而元件在定義好之後,可以通過JSX描述的方式被引用,元件之間也可以相互巢狀和組合。
(有一個需要注意的是:元件名稱總是以大寫字母開始。
舉例來說, <button />代表一個 DOM 標籤,而 <Welcome /> 則代表一個元件,並且需要在作用域中有一個 Welcome元件。)
而 React 當中的元件是通過巢狀或組合的方式來實現元件程式碼複用的。通過
props傳值和組合使用元件幾乎可以滿足所有場景下的需求。而這種方法也更符合元件化的思想。
相關文章
- 【CuteJavaScript】Angular6入門專案(2.構建專案頁面和元件)JavaScriptAngular元件
- 《WebGL程式設計指南》學習筆記——2.使用< canvas >元素Web程式設計筆記Canvas
- [譯] 單元素元件模式簡介:使用 React 或其它元件庫建立可靠元件的規則和實踐元件模式React
- 2. 揹包,佇列和棧佇列
- 文件驅動 —— 表單元件(一):表單元素元件元件
- React 深入系列1:React 中的元素、元件、例項和節點React元件
- React元件/元素與例項分析React元件
- 建立元素和刪除元素
- 空元素和可替換元素
- 塊級元素和行內元素
- 行內元素和塊級元素
- meta生成器 —— 表單元素元件元件
- React中元素與元件的區別React元件
- js設定元素控制元件顯示和隱藏程式碼例項JS控制元件
- HTML 塊級元素和內聯元素HTML
- 常見塊元素和內聯元素
- CSS塊狀元素和內聯元素CSS
- Html 內聯元素和外聯元素HTML
- 塊狀元素、內聯元素和內聯塊狀元素
- CSS 塊級元素和行內元素和行內塊元素 及其相互轉換CSS
- 2.認識Dart中的物件和變數Dart物件變數
- 02 CSS塊級元素和行內元素CSS
- CSS的塊級元素和行內元素CSS
- JavaScript動態建立元素和追加元素JavaScript
- vue的過渡小記(多元素、多元件)Vue元件
- 塊級元素和行內元素的區別
- 內聯元素和塊級元素相互轉換
- html塊元素和內斂元素的區別HTML
- 判斷元素是否在視口和元素相交
- 2. 安裝
- audio元素和video元素在ios和andriod觸屏播放IDEiOS
- [SpringCloud教程]2. 版本選型和專案搭建SpringGCCloud
- Vue元件、元件傳值和元件插槽Vue元件
- HTML 自閉和元素HTML
- 偽類和偽元素
- 塊級元素和行內元素分別有哪些
- HTML5新增的元素和廢除的元素HTML
- Schema之簡單元素、複合元素和屬性