React特性与简介
React的官方定义是:用于构建用户界面的Javascipt组件
React的特点主要分为:声明式,组件化以及跨平台编写。
React是用JavaScript构建快速响应的大型web应用程序的首选方式之一。它在Facebook和Instagram上表现优秀。
影响web性能的主要原因是:等待资源加载时间、浏览器的单线程执行
React更新流程
Scheduler(调度器):负责维护时间切片与浏览器任务调度。
Reconciler(协调器):将JSX转化为Fiber,Fiber树对比来确定本次更新的Fiber
Renderer(渲染器):用于管理React树,使其根据底层平台进行不同的调用。
优点
- 快速响应:Fiber
- 组件化:复用性强
- 声明式编程
- 跨平台:只需修改渲染器
缺点
- 大型应用需要配套学习状态管理、路由工具
- 不适合小型应用,需要用babel处理
用React开发web应用组件
数据:定义state操作视图,Mount时获取数据更新state,ref保存与视图无直接关系的值,unmount前清空ref
通信:props父子组件通信、context&redux组件信息共享
性能:函数使用useCallback值或者计算使用useMemo组件来提高性能
UI:数据决定视图,通过Ref获取到DOM
组件挂载位置的冒泡:
通过createPotral改变了组件的真实渲染位置,一个从Portal内部触发的事件会一直冒泡至包含React树的祖先,即使这些元素并不是DOM树中的祖先
Hook 是什么
Hook 是 React 16.8 的新增特性。它可以让你在不编写 class 的情况下使用 state 以及其他的 React 特性。
Hook 是一些可以让你在函数组件里“钩入” React state 及生命周期等特性的函数。Hook 不能在 class 组件中使用 —— 这使得你不使用 class 也能使用 React。
难以理解的 class 、组件中必须去理解 javascript 与 this 的工作方式、需要绑定事件处理器、纯函数组件与 class 组件的差异存在分歧、甚至需要区分两种组件的使用场景;Hook 可以使你在非 class 的情况下可以使用更多的 React 特性。
在组件之间复用状态逻辑很难、大型组件很难拆分和重构,也很难测试。Hook 使你在无需修改组件结构的情况下复用状态逻辑。
复杂组件变得难以理解、业务逻辑分散在组件的各个方法之中,导致重复逻辑或关联逻辑。Hook 将组件中相互关联的部分拆分成更小的函数(比如设置订阅或请求数据)Hook 是一些可以让你在函数组件里“钩入” React state 及生命周期等特性的函数。Hook 不能在 class 组件中使用 —— 这使得你不使用 class 也能使用 React。