react初体验!加油!
一:react特性与简介
react是用于构建用户界面的javascript库 react特点:
- 声明式,
- 组件化,
- 跨平台编写;
react 解决的问题:
- 资源太多,等待加载
比如(react.lazy;react.suspense;errorboundary)
- 浏览器线程执行,单线程执行 (异步更新,时间切片)
比如:(异步更新,时间切片,react fiber)
react更新流程:
scheduler 调度器
- 维持时间切片;
- 与浏览器任务调度;
- 优先级调度;
reconciler协调器;
- 将jsx转化为fiber;
- fiber树对比(双缓存);
- 确定本次更新的fiber;
renderer 渲染器
- 渲染器用于管理一棵reaxt树;
- 使其根据底层平台进行不同的调用;
!更新流程中是用workinprogerss tree 来代替 current tree
总结: 优点: 快速响应:fiber; 组件化:复用性强; 声明式编程; 跨平台:只需修改渲染器;
缺点: 大型应用需要配套学习 状态管理,路由工具; 不适合小型应用,需要用babel处理;
二:react 基础
1:如何用react开发一个web应用呢?
- 架构:打包配置:jsx-> babel -> js 加载优化和错误降级;
- 路由:react router 向应用中快速地添加视图和数据流,保持页面与url间的同步;
- ul:可复用ul-> 组件 -> 页面。可复用逻辑抽离成hook。
- 状态:多页面多组件共享信息 redux & context;
2:如何用react开发web应用之组件呢? 数据:通过定义一个state操作视图mount 时获取数据更新stateref 保存与视图 没有什么直接关系的值unMount 前清空Ref
通信:
- props复制组件通信;
- context & redux 组件信息共享;
性能:
- 函数使用 useCallback;
- 值或者计算使用 useMemo;
- 组件包裹memo;
ul:
- 数据来决定视图;
- 通过ref获取到dom
class有哪些组件呢?
继承+构造函数; this; 生命周期; render方法;
函数式组件:
没有生命周期; 借助hook; return JSX;
在组件中:
函数式比class 好的优点:
- 代码量小;
- 没有复杂的生命周期;
- 支持自定义hook;
组件和hook的关系有哪些?
将ui拆分成多个独立单元,这些可以构成多种视图展示,这些独立单元就是组件,组件相当于原子;
hook贴近组件内部运行的各种概念逻辑,effect,state,context 等。hook更贴近于电子。