前端知库

useActionState 如何把异步 Action 的结果变成组件状态?

参考答案

useActionState 返回当前状态、触发 Action 的函数和 pending 标记。传入的处理函数先接收上一次状态,再接收本次载荷,返回值成为新的状态;它可以执行异步操作,不同于必须保持纯计算的 useReducer reducer。

触发函数应在 Action 上下文中调用,例如传给表单的 action 属性或放在 startTransition 中。当前官方文档说明,同一 Hook 的多次触发会排队执行,后一次接收前一次的结果,不能把它想成任意并发请求的聚合器。

可预期的校验失败可以作为状态返回并显示;抛出的异常需要考虑 Error Boundary 的处理。该 Hook 不自动提供服务端,也不要求所有 Action 都是 Server Function。涉及渐进增强的 permalink 用法则有额外的框架和表单一致性条件,应按所用 React 版本文档核对。