# React
## props && state
1. props是不可變的,而state是可以根據用戶的交互來改變的。
2. props不可改變是指在組件本身中修改,不過因為組件中的props本質作用是一種父級向子級傳遞數據的方式,所以可以在父組件中修改。
3. React 中更新組件的state,會導致重新渲染用戶界面(不需要操作DOM),簡單來說就是用戶界面會隨著state變化而變化
## 路由實現原理
> TODO
## 虛擬DOM && Diff算法
### 虛擬DOM
React在Virtual DOM上實現了DOM diff算法,當數據更新時,會通過diff算法計算出相應的更新策略,盡量只對變化的部分進行實際的瀏覽器的DOM更新,而不是直接重新渲染整個DOM樹,從而達到提高性能的目的。
### Diff算法
> [相關網址](https://segmentfault.com/a/1190000010686582)
虛擬DOM樹分層比較,忽略DOM節點跨層級的移動操作。React只會對相同顏色方框內的DOM節點進行比較,即同一個父節點下的所有子節點。當發現節點已經不存在,則該節點及其子節點會被完全刪除掉,不會用于進一步的比較。這樣只需要對樹進行一次遍歷,便能完成整個DOM樹的比較。
如果真的發生跨級移動的話,React是刪除原來的,再新建一個掛到DOM樹上。
- 1. HTML
- 1.1 HTML 標簽
- 1.2 HTML 屬性
- 1.3 HTML5
- 2. CSS/CSS3
- 2.1 CSS3
- 2.2 Less
- 2.3 Sass
- 3. JavaScript
- 3.1 JQuery
- 3.2 javascript code
- 3.3 es6
- 4. 前端框架
- 4.1 Angular4+
- 4.2 React
- 4.3 Vue
- 5. 綜合知識
- 5.1 HTTP
- 5.2 websocket
- 5.3 綜合問題集合
- 5.4 前端優化
- 6. 附加知識
- 6.1 TCP/IP
- 6.2 數據結構
- 6.3 前端開發
- 7. 相關工具
- 7.1 Git
- 7.2 調試
- 7.3 Linux
- 8. 其他需要了解的內容
- 8.1 Python3
- 8.2 Java
- 8.3 數據庫