React 基础&实践(因为最近在忙比赛没时间看,结课前把后面的和这次的都更完,绝对不鸽!!)

65 阅读3分钟
  • 声明式:React采用声明式编程,使代码更易于理解和调试。(类似HTML)
  • 组件化:React使用组件化思想,将复杂的系统拆分成多个功能模块,便于重复利用。
  • 跨平台编写:React可以在多个平台上使用,包括Web、移动端和桌面应用程序。举例:使用 React Native 来构建 iOS 和 Android 的应用程序可以共享一套代码。

Thinking In React

影响Web性能的两个原因:等待资源加载时间&浏览器单线程运行


React哲学

3.4 React_优缺点

优点:

1、快速响应:Fiber

2、组件化:复用性强

3、声明式导航

4、跨平台:只需修改渲染器

缺点:

需要使用 JSX 语法,学习曲线较陡峭。此外,React 不适合单独做一个完整的框架,做大型项目需要和其他框架组合使用。

用React开发Web应用

(一)用react开发web应用

架构:打包配置,JSX-babel-js,加载优化和错误降级。

路由:在 React web 单页面应用中,页面级 UI 组件的展示和切换完全由路由控制,每一个路由都有对应的 URL 及路由信息,我们可以通过路由统一高效地管理我们的组件切换,保持 UI 与 URL 同步,保证应用的稳定性及友好体验。

UI: React 的内置 Hooks 非常适合 UI ,复用逻辑抽离成hook.

状态管理: 多页面多组件间共享信息。redux & context。Context 是 React 的一个特性,它允许你在组件树中传递数据,而无需手动传递 props。这对于在多个层级中共享数据非常有用。

(二)用react开发web应用_组件

  • 数据:通过定义state操作视图,mount时获取数据更新state,ref保存与视图无关的值,unmount前清空ref.
  • 通信:props父子通信,redux & context组件信息共享。
  • UI:数据决定视图,通过ref获取到DOM。
  • 性能:函数使用usecallback值或者计算使用useMemo组件包裹memo。也可以在在组件卸载前进行清理操作,清理掉为 window 注册的全局事件以及定时器,防止组件卸载后继续执行影响应用性能。

组件

Class组件

继承&构造函数(父子组件通信)

this(保存变量&常量的组件)

生命周期(操作组件 )

render(证明你是组件)

函数式组件(代码量低;支持自定义hook,逻辑复用方便)

借助Hook()

返回JST

生命周期=inf(adv)

Hook 的规则&原理(这里直接用了“胡萝卜会飞”大佬 的笔记)

(我真不是C大佬 的笔记,只是自己的笔记不如人家的完善)

  • 只能在最顶层使用hook Hook 是 JavaScript 函数,但在使用的时候它有着它需要遵循的规则。只在最顶层使用 Hook,这能够让 React 在多次的 useState 和 useEffect 调用中保持 hook 的状态正确。

  • 只能在react函数中调用hook 只在 React 函数中调用 Hook,也就是说在 React 的函数组件中调用 Hook,还有一点是在自定义 Hook 中调用其他 Hook。自定义hook必须以use开头。

这些规则的目的是确保 Hook 在每一次渲染中都按照同样的顺序被调用,从而让 React 能够在多次的 useState 和 useEffect 调用之间保持 hook 状态的正确

Hook过期闭包(套娃)

是指在函数组件中,由于闭包的原因,某些变量或函数引用了旧的状态或 props,导致行为异常。