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

71 阅读3分钟

前言

本文面向对于 React 知识有一定了解的同学,稍微深层次的介绍了下 React 的特性和更新流程。对于最近比较火的 Hook 也有了对比和介绍。并结合了较多具体常见的场景案例对 React 的基础知识进行了巩固介绍。

1.React简介与特性

React特点

  • 声明式
  • 组件化
  • 跨平台编写

React哲学(Thinking In React)

  • React是用JavaScript构建快速响应的大型Web应用程序的首选方式之一。它在Facebook和Instagram上表现优秀
  • 等待资源加载时间和大部分情况下浏览器单线程执行是影响web性能的两大主要原因

image.png

Lazy&Suspense

image.png

ErroBoundary

image.png

更新流程

  • Scheduler(调度器)
  • Reconciler(协调器)
    • 将JSX转化为Fiber
    • Fiber树对比(双缓存)
    • 确定本次更新的Fiber
  • Renderer(渲染器)
    • 渲染器用于管理一棵React树,使其根据底层平台进行不同的调用

image.png


  • Fiber树比较

image.png

总结优缺点

  • 优点

    • 快速响应:Fiber
    • 组件化:复用性强
    • 声明式编程
    • 跨平台:只需修改渲染器
  • 缺点

    • 大型应用需要配套学习状态管理、路由工具
    • 不适合小型应用,需要用babel处理

2.React基础温故知新

用React开发web应用

image.png

用React开发web应用-组件

image.png

组件

  • class组件

image.png

  • 函数式组件
    • 没有生命周期
    • 借助Hook
    • return JSX

image.png

  • 函数式相较于Class的优点

    • 代码量骤减,组件干净清爽
    • 没有复杂的生命周期
    • 支持自定义hook,逻辑复用方便
  • 组件和Hook的关系

    • 我们将UI拆成多个独立单元,这些单元组合可以构成多种视图展示,这些独立单元就是组件。组件相当于原子
    • hook贴近组件内部运行的各种概念逻辑,effect、state、context等。hooks更贴近于电子

Hook 规则&原理

  • 只能在最顶层使用Hook
    • React怎么知道哪个state对应哪个userState?
    • 答案是React靠的是Hook调用的程序

image.png

image.png

  • 只能在React中函数中调用Hook
    • 在React函数组件中或自定义Hook中调用
    • 自定义Hook必须以use开头
    • Hook中的state是完全隔离的

image.png

Hook 过期闭包问题

image.png

  • 在JS中,函数运行的上下文是由定义的位置决定的,当函数的闭包包住了旧的变量值时,就出现了过期闭包问题。

image.png

React常见API及作用

image.png

React常见Hook及作用

image.png

3.业务场景案例

如何划分组件? Layout

  • Navbar
  • Main Context
  • Footer
  • Floating Button

image.png

Page

  • Banner
  • CardGroup
  • Slider Group
  • Help Docs
  • Footer Banner

image.png

Component

image.png


image.png

父组件给子组件通信 案例

  • 知道子组件的表现,直接通过props传递即可
  • 不知道具体子组件表现呢?props.children

image.png

父组件给子组件通信 代码

image.png

子组件给父组件通信 案例

  • 传递信息比如说对象文本等,通过callback
  • 传递方法?父组件需要调用子组件的一些方法?

image.png

子组件给父组件通信 代码

image.png


image.png

组件间共享信息 案例

image.png


image.png

组件间共享信息 context&reducer

image.png

组件间共享信息 代码

image.png

image.png

组件间共享信息 react-redux

image.png

组件间共享信息 react-redux代码

image.png

image.png

组件性能优化 案例

image.png

组件性能优化 代码

image.png

image.png

组件性能如何优化

image.png

组件性能优化代码实现

image.png

组件挂载位置 案例

image.png


image.png

组件挂载位置 代码

image.png

组件挂载位置 冒泡

image.png

image.png

如何进行逻辑复用 useRequest案例

image.png

如何进行逻辑复用 useRequest分析

image.png

如何进行逻辑复用 userRequest run 代码

image.png

4.课程总结

总结

image.png

学习资料及工具

引用

  • 字节内部课:React基础与实践-字节前端初阶训练营