首页 > 解决方案 > 反应钩子,用 reduxForm 验证表单

问题描述

我有外部组件管理我的输入字段,如果没有输入,则会引发错误。在之前提交表单class component以及reduxForm效果时,这将引发丢失输入的错误,我想知道如何使用钩子来实现这一点,因为无论我是否有输入,提交都会通过。

import ConstructField from '../components.render';

const ActivitiesForm = () => {

  const handleSubmit_ = () => {
    console.log({ activityName });
  };

  const [activityName, setActivityName] = useState(null);
  const handleInputName = (e) => setActivityName(e.target.value);

  const { items } = useSelector((state) => ({
    items: state.items,
  }));

  const { register, handleSubmit, errors, control } = useForm();

  return (
    <div>

      <Form onSubmit={handleSubmit(handleSubmit_)} className='ui form'>
        <Form.Group widths='equal'>
          <Field
            component={ConstructField('input')}
            onChange={handleInputName}
            label='Activity Name'
            name='activityName'
            placeholder='Activity Name'
            validate={required}
          />

        </Form.Group>



        <br />

        <Form.Group inline>
          <Button.Group>
            <Button primary>Save</Button>
            <Button.Or />
            <Button positive onClick={goBackButton}>
              Go Back
            </Button>
          </Button.Group>
        </Form.Group>
      </Form>
    </div>
  );
};

const required = (value) => (value ? undefined : 'this field is required');

const activityform = reduxForm({
  form: 'activityform',
  enableReinitialize: true,
})(ActivitiesForm);

export default activityform;

标签: react-reduxreact-hooksredux-form

解决方案


推荐阅读