本技能用于在 next-safe-action 中处理校验错误,覆盖两类来源:schema 自动校验(输入不符合 .inputSchema() 时)和服务器代码中的手动校验(通过 returnValidationErrors(),例如“邮箱已被占用”)。两者在客户端产生相同的错误结构。
默认错误形状为格式化(formatted)形式,镜像 schema 结构,每层都带 _errors 数组:根级 _errors 为表单级错误,字段级如 email._errors,嵌套字段如 address.city._errors。
returnValidationErrors 会抛出 ActionServerValidationError,由框架捕获并作为 result.validationErrors 返回;它从不返回,总是抛出。对预期的非校验错误(如“缺货”“未找到”),可用同系列辅助函数 returnServerError(payload),它同样内部抛出、从不返回,但会把 result.serverError 设为带类型的 payload,并绕过 handleServerError。
典型用法:在 actionClient 的 action 中先做 schema 校验,再检查业务规则,若冲突则调用 returnValidationErrors(registerSchema, { email: { _errors: ["This email is already registered"] } })。表单级错误可在顶层使用 _errors,例如 { _errors: ["You can only create 5 posts per day"] }。
展示错误时,formatted 形状用 result.validationErrors?.email?._errors?.map(...),根级用 result.validationErrors?._errors?.map(...);flattened 形状用 result.validationErrors?.fieldErrors?.email?.map(...),表单级用 result.validationErrors?.formErrors?.map(...)。
其他资料提及自定义校验错误、returnValidationErrors 模式,以及 formatted 与 flattened 形状、按 action 覆盖。需注意:安装命令、支持平台、收费与价格信息暂未提供。