Skip to content
Lenso UI

Form

Form 从 HeroUI v2 到 v3 的迁移指南。

完整的 API 参考、样式指南与高级示例请参阅 v3 Form 文档。本指南只关注从 HeroUI v2 的迁移。

主要变化

1. Form 组件 prop

v2 与 v3 之间,Form 组件的 prop 大体保持不变,仅新增了一个:

属性v2v3说明
validationBehavior✅✅相同:"native" | "aria"
validationErrors✅✅相同:Record<string, string | string[]>
onSubmit✅✅相同
onReset✅✅相同
action✅✅相同
method✅✅相同
encType✅✅相同
target✅✅相同
className✅✅相同
onInvalid❌✅新增:表单验证失败时调用的处理函数

结构变化

在 v2 中,Form 组件的用法:

import { Form, Button } from "@lenso/ui";
export default function App() {  const handleSubmit = (e: React.FormEvent) => {    e.preventDefault();    console.log("Form submitted");  };
  return (    <Form onSubmit={handleSubmit}>      {/* Form content */}      <Button type="submit">Submit</Button>    </Form>  );}

在 v3 中,Form 组件的用法保持一致:

import { Form, Button } from "@lenso/ui";
export default function App() {  const handleSubmit = (e: React.FormEvent) => {    e.preventDefault();    console.log("Form submitted");  };
  return (    <Form onSubmit={handleSubmit}>      {/* Form content */}      <Button type="submit">Submit</Button>    </Form>  );}

迁移示例

带 onInvalid 处理函数的表单(v3 新增)

{/* v2 没有 onInvalid prop */}<Form onSubmit={onSubmit}>  {/* Form content */}  <Button type="submit">Submit</Button></Form>

onInvalid 处理函数会在表单验证失败时被调用。默认情况下,第一个无效字段会获得焦点;通过调用 e.preventDefault() 可以自定义这一行为。

总结

  1. Form 组件:没有破坏性变更——prop 与行为保持一致
  2. 新增 prop:onInvalid 可用于自定义校验失败时的处理逻辑

迁移步骤

  1. 无需改动:Form 组件在 v3 中的工作方式与 v2 相同
  2. 可选:如果你需要自定义校验失败时的处理逻辑,可使用新增的 onInvalid prop

关于表单字段

虽然 Form 组件本身没有变化,但其中使用的表单字段组件(例如 Input、TextField 等)在 v3 中已有更新。具体的字段迁移说明请参阅各自的迁移指南。