# React組件是怎么來的
組件的創造方法為React.createClass() ——創造一個類,react系統內部設計了一套類系統,利用它來創造react組件。但這并不是必須的,我們還可以用es6的class類來創造組件,這也是Facebook官方推薦的寫法。
這兩種寫法實現的功能一樣但是原理卻是不同,es6的class類可以看作是構造函數的一個語法糖,可以把它當成構造函數來看,extends實現了類之間的繼承 —— 定義一個類Main 繼承React.Component所有的屬性和方法,組件的生命周期函數就是從這來的。constructor是構造器,在實例化對象時調用,super調用了父類的constructor創造了父類的實例對象this,然后用子類的構造函數進行修改。這和es5的原型繼承是不同的,原型繼承是先創造一個實例化對象this,然后再繼承父級的原型方法。
當我們使用組件<Counter />時,其實是對Main類的實例化——new Counter,只不過react對這個過程進行了封裝,讓它看起來更像是一個標簽。
有三點值得注意:
1、定義類名字的首字母必須大寫 。
2、因為class變成了關鍵字,類選擇器需要用className來代替。
3、類和模塊內部默認使用嚴格模式,所以不需要用use strict指定運行模式。
- 簡介
- 第一章 React入門
- 1.1 創建一個React項目
- 1.2 組件
- 1.3 JSX
- 1.4 eject
- 1.5 渲染
- 第二章 React組件
- 2.1 組件定義
- 2.2 數據處理
- 2.2.1 props
- 2.2.2 state
- 2.3 生命周期
- 2.3.1 裝載過程
- 2.3.2 更新過程
- 2.3.3 卸載過程
- 2.4 事件處理
- 2.5 條件渲染
- 2.6 列表渲染
- 第三章 React高級
- 3.1 靜態類型檢查
- 3.1.1 flow
- 3.1.2 typescript
- 3.2 React Developer Tools
- 第四章 Redux狀態管理
- 4.1 安裝與配置
- 4.2 一個簡單的計數器開始
- 4.3 Store
- 4.3.1 獲取state
- 4.3.2 subscribe
- 4.4 Action
- 4.4.1 Action Creators
- 4.5 Reducer
- 4.5.1 Reducer 的拆分
- 4.6 與其他狀態管理工具的對比
- 第五章 React-Router路由
- 參考資料