React核心路由及状态管理

首页 · 01-17 · 218 人浏览

3、路由 react-router-dom V6 用法剖析

实现客户端以及服务端路由层面的同构

React Router v6

Redux Recoil Mbox

实现一些自定义hooks

Webpack babel vite
Pnpm monorepo

abortController

1、如何使用、二次封装
2、状态管理工具的分类和比较,实际业务中如何选择
Context API

数据如何获取和设置状态的基本值
如何管理数据异步工作流
如何处理数据之间的联动即派生状态 (触发A的更新 联动B的更新)

useContext + useReucer 数据量大需要创建大量context,对context state的变更会导致所有使用该contextre-redner,即时使用的不是修改的那个state值,可以采用useMemo来解决,但是仍存在一定成本

单向数据流:redux react-redux

大量模板代码、状态量大,需要把所有reducer跑一遍,潜在性能问题

响应式:Mbox

Mbox对全局state做了一层代理,监听state变化,自动更新计算属性,响应状态变化的一些操作;所以mobox可以对state直接更改
核心在于编写store
缺点    编写风格过于自由 @observable @action @autoAction 等配置项进行控制更新

2024-01-17T10:22:04.png
状态原子化:recoil

大量的模板代码,约定新的状态对象是全新的,引入immer这类的库,又结合redux toolkit或rematch这种内置了很多
最佳实践的库以及重新设计接口的库,增加学习成本

组件订阅状态 useRecoilState,useRcoilValue,实际上在订阅特定的atom或selector

      recoil内部会记录哪些组件订阅了哪些状态,每次组件渲染时,recoil都会更新这个订阅消息

依赖图构建

Recoil 维护一个依赖图,该图记录了 atoms 和 selectors 之间的依赖关系

状态更新
组件重新渲染
批量更新
recoil利用react的批量更新机制来合并多个状态更新,减少组件的重渲染次数
http://ilyx.site/usr/uploads/2024/01/675033246.png

================================================

webpack中常见的优化手段,即配置参数

性能监控的一些关键指标

接口容灾如何实现

埋点实现

如何试下与js bridge通信

Theme Jasmine by Kent Liao