当前位置: 首页 > news >正文

react 的状态管理

目录

  • 一、React 状态管理的四大层级
  • 二、React 内置状态管理(Hooks)的进阶用法
    • 1、useState 的进阶
    • 2、useReducer——更可控、更可测试的状态管理
    • 3、Context(真正的使用方式)
  • 三、React 大型项目需要使用第三方状态管理
    • 1、现代项目的主流状态管理:Zustand(最推荐)
    • 2、Jotai(原子化状态管理)
    • 3、Redux Toolkit(大企业级应用还在大量使用)
    • 4、React Query:管理“服务器状态”
  • 四、React 19 + RSC(Server Components)新趋势
  • 五、如何选择最佳状态管理方案?

一、React 状态管理的四大层级

层级用途使用方式描述
局部 UI 状态表单输入、Modal 显示useState-
组件级业务状态复杂表单、业务逻辑useReducer-
跨组件状态共享用户信息、主题、权限Context易引发全局重渲染
应用级大状态整个系统的业务数据Zustand / Jotai / Redux Toolkit大项目标配

二、React 内置状态管理(Hooks)的进阶用法

1、useState 的进阶

  • 避免频繁 re-render 的优化
    • 避免在组件内部创建大型对象或数组作为初始 state
    • 使用 lazy initialization:const [list] = useState(() => computeBigList());
  • 批量更新(React 18+ 自动批处理)
setCount(c => c + 1);
setFlag(f => !f);

2、useReducer——更可控、更可测试的状态管理

适用场景:

  • 复杂业务逻辑
  • 多个状态需要打包管理(如表单内多字段)
  • 需要可预测性(与 Redux 类似)

例子:

function reducer(state, action) {switch(action.type) {case 'change_name':return { ...state, name: action.value };case 'submit':return { ...state, loading: true };}
}

3、Context(真正的使用方式)

Context 经常被误用!

❗ 避免将“大状态”全部塞入 Context。不要用来存储:列表数据、表格数据、表单、业务状态。

因为:
Context 更新会让所有子组件无条件重新渲染。

Context 的最佳用途是:

  • 主题(theme)
  • 用户权限(role)
  • 国际化(i18n)
  • 全局配置(config)

三、React 大型项目需要使用第三方状态管理

为什么 React 大型项目需要使用第三方状态管理?
 
【答】:因为 React 内置状态管理 无法优雅解决:

  • 跨页面共享复杂业务状态
  • 多 Tab 共享状态
  • 同时管理 Server 数据 + Client 状态
  • 频繁触发大组件树重渲染
  • 数据依赖(多个组件依赖同一业务状态)

1、现代项目的主流状态管理:Zustand(最推荐)

Zustand 已经成为 React 项目的事实标准,原因:

  • 写法和 Hooks 完全一致(天然组合)
  • 极低心智负担
  • 默认支持选择性订阅(避免无意义重渲染)
  • 简单但足够强大

示例:

const useUserStore = create((set) => ({user: null,setUser: (u) => set({ user: u })
}));const user = useUserStore((state) => state.user);

Zustand 的关键优势:

  • 按需订阅,不会导致整个组件树重渲染 useUserStore(state => state.user);
  • 只有依赖 user 的组件会更新。

2、Jotai(原子化状态管理)

适合复杂 UI 场景,代表:

  • 在线表单生成器
  • 低代码平台
  • 多维度的 UI 状态拆分

核心理念:

  • 将每个状态拆分成 “原子”

像这样:

const countAtom = atom(0);
const doubledAtom = atom((get) => get(countAtom) * 2);

3、Redux Toolkit(大企业级应用还在大量使用)

优点:

  • 思想成熟、可预测性最高
  • 大中型团队标准化程度最高
  • 调试工具(DevTools)最强
  • 异步流程(RTK Query)一流

如果你的项目有:

  • 数十个模块
  • 需要严格可控的状态流动
  • 大量 API 调用
  • 中台、后台系统

那么,Redux Toolkit 是企业级最佳选择。

关于 Redux 的深度学习请看: redux 学习
关于 Redux Toolkit 的深度学习请看:Redux Toolkit 学习

4、React Query:管理“服务器状态”

注意:React Query 不是状态管理库,它是“服务器状态管理库”。

适合管理:

  • 异步请求
  • 列表、分页、缓存
  • loading/error
  • 请求重试、缓存失效
  • 后端数据同步

在现代 React 架构中:

  • 本地状态 → Zustand/Jotai/Redux
  • 服务器状态 → React Query

完美互补。

React Query 的使用请看:前端使用 React Query 管理“服务器状态”

四、React 19 + RSC(Server Components)新趋势

React 19 推出的 Server Components 技术重构了数据获取方式。

实际趋势:

  • 数据获取不再放在 Client
  • 客户端组件不需要大量状态管理
  • Context/Redux/Zustand 的使用比以前更轻

未来写法将越来越像:

// RSC:在服务端获取数据,直接返回 UI
export default async function Page() {const data = await fetch(...);return <List items={data} />
}

状态管理将更多用于:

  • UI 状态(dialog open)
  • 临时状态(表单、实时输入)
  • 客户端交互(拖拽、可视化)
  • 大部分业务数据会在 RSC 层完成。

五、如何选择最佳状态管理方案?

应用级别最佳状态管理方案
小型应用useState、useReducer、Context(仅用来做 UI 主题等)
中型应用(推荐)Zustand(本地状态)、React Query(服务器数据)
后台系统 / 中台 / 大型业务Redux Toolkit(本地)、RTK Query(服务器数据)
可视化、低代码平台Jotai(原子化)
Next.js(未来趋势)Server Components(业务数据)、Client Hooks 仅用于 UI 交互
http://www.dtcms.com/a/617651.html

相关文章:

  • 世界上最有趣的网站外贸稳中提质韧性强
  • 简单理解:DCDC(直流 - 直流转换器)和LDO(低压差线性稳压器)
  • 电科金仓国产数据库KingBaseES深度解析:五个一体化的技术架构与实践指南
  • 2025卷【答案】
  • 防止网站被克隆买完网站怎么建设
  • 搭建Python开发环境
  • Vue 项目实战《尚医通》,预约挂号底部医生排班业务,笔记39
  • Firefly 结构与样式参考:AI 重构品牌广告工作流
  • 在 Ubuntu 22.04 上安装和配置 Nginx 的完整指南
  • 网站开发需要的技能线上网站建设需求
  • 如何实现中药饮片采购的高效联动以提升行业透明度?
  • Redis(127)Redis的内部数据结构是什么?
  • 十七:Spring Boot依赖 (2)-- spring-boot-starter-web 依赖详解
  • Protocol Buffers (Protobuf) 详解
  • 沁水网站建设吉林省 网站建设
  • 正能量晚上看的网站2021网站优化客户报表
  • 智慧交通自动驾驶场景道路异常检测数据集VOC+YOLO格式8302张6类别
  • 内联函数(Inline Functions)详细讲解
  • CentOS Stream 8 通过 Packstack 安装开源OpenStack(V版本)
  • 企业实训|自动驾驶中的图像处理与感知技术——某央企汽车集团
  • 电子商城网站建设流程外链系统
  • 数据分析笔记10:数据容器
  • 基于Django的博客系统
  • 地图引擎性能优化:解决3DTiles加载痛点的六大核心策略
  • 树莓派5-ubuntu24.04 LTS 使用python构建雷达驱动包
  • Django Nginx+uWSGI 安装配置指南
  • php网站建设培训班如何在word里做网站
  • 用Rust从零实现一个迷你Redis服务器
  • 图表设计 网站郑州汉狮做网站的公司
  • 详解高可用 SFTP 服务器搭建,适用于文档管理系统、监控系统数据、NFS、FTP、Git 仓库、Web 静态资源高可用服务器等等应用场景