- 声明式: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,导致行为异常。