CalcGuide · 技术博客主页 / 一页纸学习计划
🟠

组件与 JSX:函数组件、props、state 与组合

分类:前端与客户端 · 路径:docs/topics/components-and-jsx/README.md

#react#jsx#components#props#state

学会函数组件、JSX、props/state、列表 key、lift state up、ref、portal 与受控/非受控表单

父主题

React 应用开发:从组件到 SSR 与测试

子主题(0)

组件与 JSX:函数组件、props、state 与组合

0. 元信息

1. 学习路线

JSX 语法与编译 → 函数组件 → props / children / 组合 → state 与受控输入
  → 列表与 key → 状态提升 → useRef / Portal / 错误边界 → 表单与受控/非受控

2. 阶段周数分配

精简子主题不固定周数。按 §3 顺序完成,每段都能跑一个最小 demo。

3. 九阶段表

阶段核心知识实践产出学会标准
1JSX 规则、表达式、属性、条件渲染、列表卡片 / 头像 demo能区分“表达式”和“语句”
2函数组件、props 默认值、TypeScript JSX 类型Button / Card / Avatar能写 prop 类型与 children 类型
3组合 vs 继承、slot 模式、render props 简介Tabs / Dialog能用 children 做插槽
4useState、setState 是异步批、对象/数组不可变更新计数器、Todo 列表能解释“闭包里读旧 state”的成因
5受控 vs 非受控、useRef、defaultValue搜索框、文件上传不混用 value + defaultValue
6列表 + 稳定 key、key 的语义1000 项 todo不再用 index 当 key
7状态提升、Context 引入选中态 / 主题能决定状态该放哪
8createPortal、错误边界、lazy + SuspenseModal、ErrorBoundary知道错误“冒泡到边界”
9表单库选型:react-hook-form / Formik / 原生注册表单能选最小的库

4. 第一周任务

精简版省略固定日程。按 §3 顺序做最小可运行 demo,再补边界用例。

5. 阶段通用验收

精简版省略;每个产出至少保留命令、版本、实际输出。

6. 最终验收

精简版省略;以 §3 第 9 阶段和 §9.4 案例口述检查为准。

7. 综合项目

精简版省略;成果并入父主题电商 SPA 的“基础组件库 + 路由壳”。

本主题贡献

8. 推荐资料

精简版省略;使用 §9.3 和 §9.6 Source。

9. 学习资料汇聚(v0.3 自包含)

9.1 背景与动机

React 把 UI 抽象为“状态到视图”的纯函数。组件是边界、props 是输入、JSX 是声明式语法糖。理解组件模型是理解 React 一切后续概念(Hooks、Suspense、RSC)的基础。错误往往不是“不会 Hook”,而是“状态放错位置、props 透传太多、key 用错”。

9.2 概念地图

flowchart LR
  JSX[JSX] --> Comp[函数组件]
  Comp --> Props[props / children]
  Comp --> State[useState]
  State --> Lifted[状态提升]
  Lifted --> Context
  Comp --> Ref[useRef]
  Comp --> Portal[createPortal]
  Comp --> Error[ErrorBoundary]
  Comp --> Lazy[lazy + Suspense]
  State --> Form[受控/非受控]
  Form --> Lib[react-hook-form / Formik]

9.3 基础知识讲解

9.3.1 论文 / 规范

9.3.2 书

9.3.3 博客 / 文档

9.3.4 人物

9.3.5 方法

9.4 经典问题与经典案例

#问题为什么重要最简答案或证据
1index 做 key重排 / 过滤后状态错位用稳定 id
2受控组件值不变onChange 没更新 stateonChange={e => setX(e.target.value)}
3setState 立刻读不到批处理异步useEffect / useReducer;或接受旧值
4闭包陷阱(stale closure)effect 拿到旧 state加依赖或用 ref
5Portal 焦点丢失modal 关闭后焦点跑走关闭时 ref.current.focus() 回到触发元素
6ErrorBoundary 不生效事件处理器不抛到边界事件内 try/catch;或在边界内调用
7受控 + defaultValue 混用React 警告选其一
8props 透传(prop drilling)跨 3 层以上用 Context / 组合 / store
9列表超大卡顿DOM 太多虚拟列表 / 分页 / windowing
10children 类型丢失TS 报“找不到属性”React.ReactNode 或自定义 prop

9.5 学习难点

9.6 技术标准与接口

9.6.1 Entity

名称版本组织状态
React19Meta活跃
React DOM19Meta活跃
TypeScript JSX(TSX)TS 5+Microsoft活跃
react-hook-form7+社区活跃
Formik2+社区维护中

9.6.2 Scope

9.6.3 Structure

9.6.4 Ecosystem

9.6.5 Depth Tiers

层级可观察能力
L0知道 React / JSX 是什么
L1看得懂 props / state 示例
L2能写受控表单、自定义 Hook、错误边界
L3能解释 key、lift state、状态位置决策
L4能设计组件库、a11y 焦点流、组合 API

本计划目标:L2~L3

9.6.6 Source

10. 常见误区

11. 所有知识点分类

  1. 编程语言 2. 数据结构与算法 3. 计算机基础 4. 工程技术 5. Web 与后端 6. 前端与客户端 7. 数据与人工智能 8. 项目与职业能力 9. 安全与可靠性

本计划归属:前端与客户端 主 + 工程技术 辅。


直接依赖(0)

查看知识图谱