antd -- form表单

233 阅读1分钟
<1> 大致结构

表单是一种很常见的标签,在antd组件库中,为我们封装了表单标签,结构大致如下:

` < Form >

< Form.Item name = "" labe = "">

 < input />

</ Form.Item>

< Form.Item
name = "" labe = "">

  < select />

</ Form.Item>

< /Form>

`

  • 每个 < Form.Item /> 标签中可以放我们需要的组件,eg:输入框、下拉选择框...

  • 每个 < Form.Item /> 都需要我们设置 namelabel 属性

    • name = xxx 属性:我们可以通过该值,利用 ref.current.xxx拿到对应的子表单实例的value值
    • labe = xxx 属性:是将来展示的标签的title
<2> 使表单受控

如果我们想把表单变为受控组件,即想要动态地操作、获取里面的值就可以给它加上一个 ref 属性!!

`

const ref = useRef()

< Form ref = {ref}>

< Form.Item> < input /> </ Form.Item>

< Form.Item> < select /> </ Form.Item>

< /Form>

`

  • 就可以通过 ref.current 拿到此表单的实例,当然可以通过ref.current.xxx拿到name属性为xxx的子表单的value值

forwardRef:

一个函数,接收一个组件,会对该组件进行封装,并返回一个组件,被封装的组件,除了 props 属性外,还会接收到一个 ref 属性,会把父组件的 ref 接过来,并在自己的组件中把自己的东西装进去,这样在父组件中就可以获得子组件中的东西了!!!

1949.png

1950.png

如上, 在父组件调用 ref.current 获得的就是子组件中的 < button /> 元素实例。

<3> 操作表单的一些方法:

在表单实例上调用

获取(子)表单的value值:

  • getFieldsValue()
  • getFieldValue()

动态更改(子)表单的value值:

  • setFieldsValue()
  • setFieldValue()

1951.png

触发表单验证:

  • validdateFields()