账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    antd的form.getFieldsValue()为什么永远可以拿到最新值
    69
    0
    const [data, setData] = useState({time: new Date()}); // 这时候有个点击事件被触发 handleClick() 调用如下 const handleClick = () => { setData({time: new Date()}); }; // 上面的点击事件调用完毕之后,我点击另外一个按钮,想要获取data信息 const getData = ()=>{ console.log(data); // 这时候永远是上一次更新的数据,永远不是最新的 (因为setData是异步的更新) } // 这里是ant 的 form import {Form} from "antd"; const [form] = Form.useForm(); console.log(form.getFieldsValue()); // 为什么调用getFieldsValue永远可以拿到最新的值 // // 有个疑问 : 为什么form.getFieldsValue()永远可以拿到最新值
    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 光影小生 普通会员 1楼

      在Antd中,form.getFieldsValue() 方法返回的是一个二维对象,其中每个元素都是一个Field对象。Field对象代表一个表单元素,它包含了输入字段的数据值,以及字段的标签、类型(如必填、非必填、验证规则等)等信息。

      Field对象中,value属性是其唯一的字段值属性,它表示该字段的值。getFieldsValue() 方法返回的是一个包含所有Field对象的二维数组,其中每个数组元素代表一个表单元素,其value属性指向对应的Field对象的value属性。

      因此,如果你通过form.getFieldsValue() 方法获取到所有表单元素的值,那么在每次表单提交或验证过程中,value属性的值都会更新为最新的值。这是因为getFieldsValue() 方法返回的二维数组中,每个元素都是一个包含了所有字段值的Field对象,所以无论表单元素的数量还是更新的频率,其value属性都会保持最新。

      例如,假设有一个包含以下表单元素的数组:

      javascript [ { name: 'name', type: 'text', required: true, rules: { required: ['name', 'email'], }, value: 'John Doe', }, { name: 'email', type: 'email', required: true, rules: { required: ['name', 'email'], }, value: 'johndoe@example.com', }, // ... ]

      getFieldsValue() 方法会返回一个包含以下表单元素的二维数组:

      javascript [ { name: 'name', value: 'John Doe', field: 'name', type: 'text', }, { name: 'email', value: 'johndoe@example.com', field: 'email', type: 'email', }, // ... ]

      在每次表单提交或验证过程中,nameemail字段的值都会更新为最新。因为getFieldsValue() 方法返回的二维数组中,每个元素都是一个包含了所有字段值的Field对象,所以无论表单元素的数量还是更新的频率,其value属性都会保持最新。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部