Actions 是 React 19 对「数据变更」的一等支持:把异步函数传给 form 的 action 或 startTransition,React 自动管理 pending、错误与乐观更新,替代手写的 useState + isLoading 样板。useActionState 接收一个 action 函数与初始状态,返回 [state, formAction, isPending],把上一次提交的结果串成状态机。
配套 hooks:useFormStatus 让子组件读取最近表单的 pending;useOptimistic 做乐观更新,失败后自动回滚。易错点:Action 抛错会冒泡到最近的 ErrorBoundary,不会自动写进 state,业务错误应返回描述性对象;useOptimistic 必须在 transition 或 Action 上下文里使用。追问:与 react-query 的 mutation 模式对比、Server Action 在 Next.js 中的序列化与安全边界。
const [error, submit, pending] = useActionState(async (prev, formData) => {
const e = await save(formData)
return e ?? null
}, null)