JSX 的基本語法規(guī)則:遇到 HTML 標(biāo)簽(以 < 開頭),就用 HTML 規(guī)則解析;遇到代碼塊(以 { 開頭),就用 JavaScript 規(guī)則解析
組件類的第一個(gè)字母必須大寫
組件類只能包含一個(gè)頂層標(biāo)簽
組件的屬性可以在組件類的 this.props 對(duì)象上獲取
class 屬性需要寫成 className ,for 屬性需要寫成 htmlFor
this.props.children 屬性表示組件的所有子節(jié)點(diǎn)
this.props.children 的值有三種可能:如果當(dāng)前組件沒有子節(jié)點(diǎn),它就是 undefined ;如果有一個(gè)子節(jié)點(diǎn),數(shù)據(jù)類型是 object ;如果有多個(gè)子節(jié)點(diǎn),數(shù)據(jù)類型就是 array
React 提供一個(gè)工具方法 React.Children 來處理 this.props.children 。我們可以用 React.Children.map 來遍歷子節(jié)點(diǎn)
由于 this.refs.[refName] 屬性獲取的是真實(shí) DOM ,所以必須等到虛擬 DOM 插入文檔以后,才能使用這個(gè)屬性,否則會(huì)報(bào)錯(cuò)
this.props 表示那些一旦定義,就不再改變的特性,而 this.state 是會(huì)隨著用戶互動(dòng)而產(chǎn)生變化的特性
我們寫一個(gè)XML標(biāo)簽,實(shí)質(zhì)上就是在調(diào)用 React.createElement 這個(gè)方法,并返回一個(gè) ReactElement 對(duì)象
渲染HTML標(biāo)簽,聲明變量采用 首字母小寫
渲染React組件,聲明變量采用 首字母大寫
當(dāng)需要拓展我們的屬性的時(shí)候,定義個(gè)一個(gè)屬性對(duì)象,并通過 {…props} 的方式引入
屬性值使用表達(dá)式,只要用 {} 替換 ""
在一個(gè)組件的子元素位置使用注釋要用 {} 包起來
直接在標(biāo)簽上使用style屬性時(shí),要寫成style={{}}是兩個(gè)大括號(hào)
margin-top要寫成marginTop
如果需要使用自定義屬性,要加 data- 前綴
在編寫JSX時(shí),在 { } 中不能使用語句(if語句、for語句等等),但可以使用求值表達(dá)式
map遍歷的時(shí)候,需要為每一條記錄添加key
在ES6里,我們通過定義一個(gè)繼承自React.Component的class來定義一個(gè)組件類
給組件定義方法不再用 名字: function()的寫法,而是直接用名字(),在方法的最后也不能有逗號(hào)了
在ES6下,你需要通過bind來綁定this引用,或者使用箭頭函數(shù)(它會(huì)綁定當(dāng)前scope的this引用)來調(diào)用