什麼是 React 元素javascript
建立 React 元素css
使用 JSX 語法:const element = <h1>Hello, world</h1>;
,JSX 語法是用 React.createElement() 來構建 React 元素的。java
React.createElement()
,接受三個參數:1. 能夠是一個標籤名(如div、span、或 React 組件);2. 爲傳入的屬性;3. 組件的子組件。數組
React.cloneElement()
,與 React.createElement()
類似,不一樣的是它傳入的第一個參數是一個 React 元素,而不是標籤名或組件;新添加的屬性會併入原有屬性,同屬性名新的會替換舊的,傳入到返回的新元素中。瀏覽器
渲染 React 元素到 DOM服務器
React.createElement()
編譯成上面的 js 對象(也就是虛擬DOM節點);2. 而後再調用 ReactDOMComponent( vdom).mountComponent()
將虛擬DOM變成真實的DOM;3. 最後用 appendChild( domNode )
插入DOM樹,顯示出來。更新已渲染的元素網絡
只更新必需要更新的部分架構
JSX 是 一種 JavaScript 的語法擴展,運用於 React 架構中,它是用來聲明 React 當中的元素,React 使用 JSX 來描述用戶界面。app
JSX就是 Javascript 和 XML 結合的一種格式,React 發明了 JSX,利用HTML語法來建立虛擬DOM。當遇到 <,JSX就當HTML解析,遇到 { 就當 JavaScript 解析。dom
**注意:**大括號裏是 JavaScript,不要加引號,加引號就會被當成字符串。
組件能夠將UI切分紅一些獨立的、可複用的部件,這樣就只需專一於構建每個單獨的部件了。
定義組件
自定義組件(組件名稱必須以大寫字母開頭)
組件渲染(組件名必須大寫字母開頭)
組合組件(返回值只能有一個根元素)
提取組件
Props 的只讀性
修改 state 時使用 setState()。
將函數轉換爲類
React.Component
的ES6類render()
空方法render()
方法中使用 this.props
替換 props爲一個類添加局部狀態
render()
方法中使用 this.state.date
替代 this.props.date
this.state
<Clock />
元素移除 date
屬性將生命週期方法添加到類中
<Clock />
被傳遞給 ReactDOM.render()
時,React
調用 Clock
組件的構造函數;React
而後調用 Clock
組件的 render()
方法;Clock
的輸出插入到 DOM 中時,React 調用 componentDidMount()
生命週期鉤子;tick()
方法;Clock
組件被從DOM中移除,React會調用 componentWillUnmount()
這個鉤子函數,定時器也就會被清除。正確地使用狀態 關於 setState() :
setState()
; -更新狀態多是異步的,構造函數是惟一可以初始化 this.state
的地方;數據單向流動
語法差別
return false;
不會阻止組件的默認行爲,須要調用 e.preventDefault()
;儘可能不要使用 addEventListener
綁定事件處理函數的 this
-經過 bind 方法,原地綁定事件處理函數的 this 指向(特色:書寫簡單,可是每次渲染都會執行生成一個新函數) -經過一個箭頭函數將真實的事件處理函數包裝(特色:能清晰描述事件處理函數接收的參數列表) -在 constructor 中預先將全部的事件處理函數經過 bind 方法進行綁定(特色:解決了前兩種方法的額外開銷和從新渲染的問題,可是書寫有點複雜) -使用類成員字段定義語法(特色:解決了上述三種問題,惟一的就是它還沒被正式歸入 ES5 規範中)
HTML 表單元素與 React 中的其餘DOM元素有所不一樣,由於表單元素生來就保留了一些內部狀態。
用value實現受控組件
< input type=」text」/>
<textarea>
,經過它的子節點定義了它的文本值<select>
,建立下拉列表file input 標籤
處理多個輸入元素
受控 input 組件的 null 值
CSS
內聯樣式:使用內聯樣式屬性設置元素樣式,值必須是JavaScript對象。
background-color
編寫的,所以必須使用camel case語法編寫具備兩個名稱的屬性。CSS 樣式表
CSS 模塊
Sass
React 中的條件渲染和 JavaScript 中的一致,使用 JavaScript 操做符 if 或條件運算符來建立表示當前狀態的元素,而後讓 React 根據它們來更新 UI。
Keys 能夠在DOM中的某些元素被增長或刪除的時候幫助 React 識別哪些元素髮生了變化。
列表(Lists)
鍵(Keys)- 幫助 React 標識哪一個項被修改、添加或者移除了
React 最初的目的是使用 JavaScript 建立大型的,快速響應的網絡應用。
React 的衆多優勢之一是它讓咱們在編寫代碼的時候同時也在思考咱們的應用。
咱們須要瞭解的五大核心概念有:
React 組件參數類型的驗證。
高階組件就是一個函數,且該函數接受一個組件做爲參數,並返回一個新的組件。也就是說,高階組件是參數爲組件,返回值爲新組件的函數。