1、生命周期
組件的生命周期可分成三個狀態(tài):
Mounting:已插入真實 DOM
Updating:正在被重新渲染
Unmounting:已移出真實 DOM
componentWillMount?在渲染前調(diào)用,在客戶端也在服務(wù)端。
componentDidMount?: 在第一次渲染后調(diào)用,只在客戶端。之后組件已經(jīng)生成了對應(yīng)的DOM結(jié)構(gòu),可以通過this.getDOMNode()來進行訪問。 如果你想和其他JavaScript框架一起使用,可以在這個方法中調(diào)用setTimeout, setInterval或者發(fā)送AJAX請求等操作(防止異部操作阻塞UI)。
componentWillReceiveProps?在組件接收到一個新的 prop (更新后)時被調(diào)用。這個方法在初始化render時不會被調(diào)用。
shouldComponentUpdate?返回一個布爾值。在組件接收到新的props或者state時被調(diào)用。在初始化時或者使用forceUpdate時不被調(diào)用。?
可以在你確認不需要更新組件時使用。
componentWillUpdate在組件接收到新的props或者state但還沒有render時被調(diào)用。在初始化時不會被調(diào)用。
componentDidUpdate?在組件完成更新后立即調(diào)用。在初始化時不會被調(diào)用。
componentWillUnmount在組件從 DOM 中移除的時候立刻被調(diào)用。
2、組件
推薦的組件有兩種,第一個,無狀態(tài)組件是以函數(shù)的形式,第二個,es6形式的extends React.Component定義的組件;

無狀態(tài)組件還有以下幾個顯著的特點:
組件不會被實例化,整體渲染性能得到提升
因為組件被精簡成一個render方法的函數(shù)來實現(xiàn)的,由于是無狀態(tài)組件,所以無狀態(tài)組件就不會在有組件實例化的過程,無實例化過程也就不需要分配多余的內(nèi)存,從而性能得到一定的提升。
組件不能訪問this對象
無狀態(tài)組件由于沒有實例化過程,所以無法訪問組件this中的對象,例如:this.ref、this.state等均不能訪問。若想訪問就不能使用這種形式來創(chuàng)建組件
組件無法訪問生命周期的方法
因為無狀態(tài)組件是不需要組件生命周期管理和狀態(tài)管理,所以底層實現(xiàn)這種形式的組件時是不會實現(xiàn)組件的生命周期方法。所以無狀態(tài)組件是不能參與組件的各個生命周期管理的。
無狀態(tài)組件只能訪問輸入的props,同樣的props會得到同樣的渲染結(jié)果,不會有副作用

React.Component是以ES6的形式來創(chuàng)建react的組件的,是React目前極為推薦的創(chuàng)建有狀態(tài)組件的方式,最終會取代React.createClass形式;相對于?React.createClass可以更好實現(xiàn)代碼復(fù)用
3、組件之間傳參數(shù)
父到子:props
子到父:
父,現(xiàn)定義個預(yù)留函數(shù),主要作用把值賦給state


子,通過取父組件的屬性來把state傳遞給子組件
