React 19 Actions:我讲了三个 Hook 却始终没说清什么是 Action
来源:dev.to — 2026-09-01
📋 概述
作者承认自己在前三篇文章里反复使用 Action 这个词,却从未定义它,这篇专门补上这个缺口。他给出 React 官方文档的严格定义:一个在 startTransition 里被调用的函数就是 Action。关键在于决定它成为 Action 的从来不是函数内部的任何代码,而是它走过的「门」——直接调用 startTransition、useTransition 的调用、表单 action 属性传函数而非字符串、以及 useActionState。这四扇门里,只有 useActionState 专门捕获并持有函数的返回值作为状态,这解释了为何第一篇里 isPending 与真实结果一起出现。他也澄清 useFormStatus 读的是最近父表单的 pending 状态,useOptimistic 则是从一个已运行的 Action 内部调用的 setter。
🔑 核心要点
- 一个在 startTransition 里被调用的函数,就是 React 官方对 Action 的定义
- 让函数变成 Action 的与函数内部无关,而是它走进哪扇门
- 四扇门:startTransition、useTransition、form 的 action 属性、useActionState
- 只有 useActionState 会捕获 Action 的返回值并作为状态持有
- useFormStatus 读父表单的 pending 状态,useOptimistic 是在运行中的 Action 内调用的 setter
💡 金句
概念在已经感受过它解决的问题之后,往往才真正扎下根来。
👍 0
👎 0
← 返回 dev.to 首页