<1> 大致结构
表单是一种很常见的标签,在antd组件库中,为我们封装了表单标签,结构大致如下:
` < Form >
< Form.Item name = "" labe = "">
< input />
</ Form.Item>
< Form.Item
name = "" labe = "">
< select />
</ Form.Item>
< /Form>
`
-
每个 < Form.Item /> 标签中可以放我们需要的组件,eg:输入框、下拉选择框...
-
每个 < Form.Item /> 都需要我们设置
name和label属性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 接过来,并在自己的组件中把自己的东西装进去,这样在父组件中就可以获得子组件中的东西了!!!
如上, 在父组件调用 ref.current 获得的就是子组件中的 < button /> 元素实例。
<3> 操作表单的一些方法:
在表单实例上调用
获取(子)表单的value值:
getFieldsValue()getFieldValue()
动态更改(子)表单的value值:
setFieldsValue()setFieldValue()
触发表单验证:
validdateFields()