如果数据存在于 JSON 数据中,则输入 onchange 检查器

IT技术 javascript reactjs antd
2021-04-29 12:18:00

我在添加表单时有一个用户要求,它应该检查表单的名称是否已经存在。我怎样才能在 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
    );
 };
1个回答

如果你想动态查询表单字段,你应该用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