雷姆 Agent·念念工作台
首页文章项目

concept / stage 2

状态管理与组件通信

根据状态影响范围选择 Props、Context、URL 或外部 Store,避免无目的引入状态库。

ReactIntermediate已完成35 分钟#react#state-management#context#component-communication
BEFORE YOU START

学习前置

ReactReact 组件与数据流先学习 ↗

一、这个技术是什么?

当一个页面只有一个按钮时,状态可以放在按钮组件里;当筛选条件要影响列表、URL 和统计面板时,状态就需要被放到合适的共享位置。

状态管理解决的是“谁拥有数据、谁可以修改数据、其他组件如何得到变化”的问题。

二、没有它之前发生了什么?

状态散落在多个组件
↓
组件之间互相传值,出现多层 Props
↓
为了省事把所有状态放进一个全局对象
↓
任何更新都可能影响整棵组件树
↓
根据状态影响范围选择通信方式

三、核心概念

1. Local State

只影响一个组件或局部区域的数据,优先放在最近的拥有者组件中。

2. Lifting State Up

多个兄弟组件需要同一份数据时,把状态提升到共同父组件。

3. Context

Context 适合主题、语言、用户等较稳定的跨层数据,但不应该成为所有状态的垃圾桶。

4. URL State

搜索词、分页和筛选条件适合放进 URL,因为它们需要分享、刷新后保留或支持浏览器前进后退。

5. External Store

跨页面、复杂更新或需要独立订阅时,可以选择外部 Store,但应先确认 Props、Context 和 URL 是否已经足够。

四、运行流程

五、面试复习

一句话回答

状态管理的关键不是选择某个库,而是确定状态的拥有者、影响范围和更新边界,再选择 Local State、Props、Context、URL 或 Store。

高频追问

  • 什么情况下需要 Redux 或其他 Store?
  • 为什么筛选条件适合放在 URL?
  • Context 能不能替代所有状态管理?
  • 如何减少状态更新带来的重复渲染?

容易答错

不要把“全局状态”理解成“所有数据都放全局”。全局范围越大,依赖关系和更新成本通常越高。

六、项目展示

知识平台可以把搜索词放进 URL,把收藏状态放在客户端 Store,把 Markdown 知识作为服务端数据。三类状态职责清晰,便于后续增加登录和同步。

INTERVIEW MODE

面试复习

把知识讲给面试官听
ANSWER

状态管理的关键不是选择某个库,而是确定状态的拥有者、影响范围和更新边界,再选择 Local State、Props、Context、URL 或 Store。

FOLLOW-UP
  • 什么情况下需要 Redux 或其他 Store?
  • 为什么筛选条件适合放在 URL?
  • Context 能不能替代所有状态管理?
  • 如何减少状态更新带来的重复渲染?
WATCH OUT

不要把“全局状态”理解成“所有数据都放全局”。全局范围越大,依赖关系和更新成本通常越高。

PROJECT PRACTICE

把 状态管理与组件通信 放进项目里

用真实项目验证概念,再把架构、取舍和结果整理成面试时可以讲清楚的案例。

Hermes AgentAgent 工作流与工具调用
个人博客技术文章与工程实践展示
AI 知识平台当前 Markdown 驱动的知识系统
KEEP EXPLORING

相关知识

3 个推荐节点
React · BeginnerReact 组件与数据流30 分钟 · 继续学习 ↗React · IntermediateReact Hooks 核心思想35 分钟 · 继续学习 ↗Next.js · AdvancedNext.js 数据获取与缓存机制40 分钟 · 继续学习 ↗
← 上一篇React Hooks 核心思想下一篇 →Next.js 核心架构

课程目录

  1. 1. Local State
  2. 2. Lifting State Up
  3. 3. Context
  4. 4. URL State
  5. 5. External Store
  6. 一句话回答
  7. 高频追问
  8. 容易答错

学习关系

  • 阶段:2
  • 顺序:3
  • 前置知识:1
  • 相关知识:3
  • 更新时间:2026-08-02