# 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 数据库