首页 > 解决方案 > 如果 JSON 数据中存在数据,则输入 onchange 检查器

问题描述

添加表单时我有一个用户要求,它应该检查表单的名称是否已经存在。我怎么能在 es6 中做到这一点?我正在使用 AntDesign 和 ReactJS。

这是我的代码

<Form.Item label="Form Name">
  {getFieldDecorator('formName', {
   rules: [formConfig],
  })(<Input name="formName" onChange={onChange} />)}
</Form.Item>
const handleChange = e => {
  const { name, value } = e.target;

   setState(() => ({
     ...state,
     [name]: value,
   }));

   let isExist = [...formDataSource];
    let foundExistItem = isExist.filter(
      item => item.formName === formName
    );
 };

标签: javascriptreactjsantd

解决方案


如果你想动态查询表单字段,你应该用Form.create.

它注入了有用的功能,例如onFieldsChange监听器:

const onFieldsChange = (_, changedFiels) => {
  const { username } = changedFiels;
  if (username) {
    // Make your API checks
    console.log(`Now changing ${username.name}`);
  }
};

const ValidatedFields = Form.create({ onFieldsChange })(App);

注意:您应该保持Form.Item不受控制的使用,getFieldDecorator因此避免onChange在收集表单数据时使用。

如果您仍然坚持控制表单项,您应该使用getFieldValue

const handleChange = e => {
  const { name, value } = e.target;
  const { getFieldValue } = form;

  setState(() => ({
    ...state,
    [name]: value
  }));

  // or use getFieldValue for a single query
  const values = getFieldsValue(['formName',...more fields]);

  if (values.length) {
    // API CALL
  }
};

编辑 Q-58289639-FormFieldValidate


推荐阅读