react基础与实践|青训营笔记

56 阅读2分钟

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更贴近于电子。