ant design react form表单如何监听setFieldsValue

前言

antd封装的很好 一般表单已经不需要我们去设定state和onChange来手动双向绑定了

利用FormInstance.setFieldsValue()和FormInstance.getFiedldsValue()即可很方便的实现数据存取

本文在不使用额外的状态(state)情况下监听setFieldsValue导致表单数据的变化.

ant design的文档:

我们监听setFieldsValue需要改写一下FormInstance实例上的函数

import React, { useEffect, useMemo, forwardRef, useImperativeHandle } from 'react'
import { Form, Input } from 'antd'

export default forwardRef(function Form1(props, ref) {
  const [form] = Form.useForm()
  useImperativeHandle(ref, () => ({
    form
  }))

  
  //改写setFiedldsValue
  useEffect(() => {
    const e = form.setFieldsValue
    const setFieldsValue = (vals, cb) => {
      e(vals)
      cb && cb(vals)
    }
    form.setFieldsValue = setFieldsValue
  }, [])

  useEffect(() => {
    setTimeout(() => {
      form?.setFieldsValue({
        name: "田所浩二"
      }, (vals) => {
        //监听setFieldsValue
        console.log(vals)
      })
    }, 1000)
  }, [])

  return (
    <Form form={form}>
      <Form.Item label="name" name="name" rules={[{required: true, message: '名字必填'}]}>
        <Input/>
      </Form.Item>
      <Form.Item label="age" name="age" rules={[{required: true, message: '年龄必填'}]}>
        <Input/>
      </Form.Item>
    </Form>
  )
})

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值