找回密码
 立即注册
首页 业界区 业界 react + Ant表单数据回调不更新

react + Ant表单数据回调不更新

焦和玉 2025-6-6 15:53:04
刚学react,拿项目练手,有个问题恶心死了,折腾了好久,百度上也没找到很合适的,觉得有必要分享一下,不为别的,以后自己遇到了,再复习一下,方案不是最优解,但能解决问题


业务描述
      就是点击编辑,新增的时候,数据发生变化,我获取到了,第一次更新成功,后面就只会有第一次的值
1.png

代码描述
      我用的是initialValues 刚开始感觉还行,后面加入逻辑的时候麻了,不好要,翻了文档上才知道不行
2.png

 解决方案代码 
代码是我截取的,所以只是提供一个思路
  1. import React, {  useState, useEffect } from 'react';
  2. import { Form, Input } from 'antd';
  3.    
  4.    const [settings, setTingsRedux] = useState({});
  5.    const [fields, setFields] = useState([]) // 表单拿到的只是他需要的多余的好像也不存
  6.    // 解决表单更新不成功问题
  7.    useEffect(() => {
  8.       setFields(
  9.          Object.keys(settings).map(key => {
  10.             return { name: key, value: settings[key] }
  11.          })
  12.       )
  13.    }, [settings])
  14.    useEffect(() => {
  15.       console.log(fields, '表单改变了')
  16.    }, [fields])
  17.   return (
  18.    <Form name="nest-messages" onFinish={onFinish} className={styles.Form} fields={fields} onFieldsChange={(_, allFields) => {
  19.                setFields(allFields);
  20.             }}>
  21.         <Form.Item name='deName' label="设备名称" props="deName" rules={[{ required: true, message: '请输入设备名称' }]}>
  22.                   <Input placeholder="placeholder" allowClear="请输入设备名称" showCount maxLength={16} />
  23.                </Form.Item>
  24. </Form>
  25. )
复制代码
这样解决后,就不存在不更新的问题了
 

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

相关推荐

您需要登录后才可以回帖 登录 | 立即注册