#### 調用setState后都發生了什么
this.setState并不會立即更新視圖,react會觸發一個調和過程(狀態合并):將同一事務中的所有setState合并到一個新的對象里,之后批量更新,在更新過程創建新的組件樹(virtual dom),組件樹之間的比較采用diff算法,計算出節點最小更新范圍然后更新ui,在回調函數中可以獲取到最新的state,你可以使用函數方式來setState。
#### class與function
函數式編程要求輸出結果是純的,也就是一個輸入只能有與之唯一對應的輸出,沒有外部變量的干擾。react function寫法與純函數相比就是props與渲染結果一一對應,不依賴于組件內部state,所以在function寫法中你無法操作state和生命周期。
#### children
props.children不一定是數組,也有可能是undefined和對象(只有一個子節點時),所以map會報錯
React.children.map則不會有該問題。
#### 事件機制
React自己封裝了一套事件系統(合成事件)以兼容各瀏覽器,將jsx中所有事件綁定都托掛在document上(包括組件、事件名稱、處理函數等),以事件委托的方式在冒泡階段處理事件。這種委托方式不但優化了性能,還解決了在更新DOM中需要考慮事件監聽的問題。
#### diff算法
http://www.infoq.com/cn/articles/react-dom-diff
#### 生命周期
https://www.cnblogs.com/hhhyaaon/p/5807310.html