【问题标题】:want to show validation error on handlechange using react hooks想使用反应钩子在handlechange上显示验证错误
【发布时间】:2021-01-19 00:28:54
【问题描述】:

我是 React 16 的新手,请找到下面我用于使用钩子进行验证的代码。我使用了一个可重复使用的选择框,在选项的值上,我显示了一个输入框。 验证规则:如果单击提交时选择框为空,我想在选择值时显示错误并隐藏它,如果输入框为空,则在我们提供有效输入时显示错误并隐藏。 Problem : When error message appears for select box and after selecting the value when input box appears it shows the error for that too so it's like the first look of input box is with the validation error.我想在用户点击提交按钮时显示它,并且在有效输入后它应该消失。

非常感谢您的帮助!

  const Step3 = (props) => {
    const [values, setValues] = useState({});
    const [errors, setErrors] = useState({});
    const [isSubmitting, setIsSubmitting] = useState(false);
    const [isSent, setIsSent] = useState(false);
    const { handleChange, handleSubmit } = useForm(validate);
    useEffect(() => { if (Object.keys(errors).length === 0 && isSubmitting) { } }, [errors]);

    const onChange = (event) => { 
        event.persist && event.persist(); 
        setIsSubmitting(false);
        const newValues = {...values,[event.target.name]:event.target.value};
        isSent && setErrors(validate(newValues));
        setValues(values => newValues);
     };
    const handleSubmit = (event) => { 
        if (event) event.preventDefault(); 
        setErrors(validate(values)); 
        setIsSubmitting(true); 
        setIsSent(true);
    };
return (
    <div>
        <form onSubmit={handleSubmit} noValidate>
          <Select
            name="abc"
            label="ABC"
            options={options}
            onChange={onChange}
            
        />
          {errors.abc && (<p className="help is-danger">{errors.abc}</p>)}
          
            {values.abc=='Apple' && <input name="xyz" value={values.xyz||'' onChange={onChange}}/>
                {errors.xyz && (<p className="help is-danger">{errors.xyz}</p> )}
            }
            
          <Button type={submit}>
            Submit
          </Button>
        </form>
    </div>
  );
};

function validate(values) {
     let errors = {}
     if (!values.abc)
     { errors.abc= ' required'; }
     if (!values.xyz) {
     errors.xyz= 'required'; 
     }
     return errors;
 };

【问题讨论】:

  • 你能在这里发布代码吗?
  • 请添加您的代码
  • 我已经添加了代码...谢谢 Nikhil 和 Adir
  • 请让我知道解决方案....当点击提交按钮时出现下拉验证时,也会出现输入框验证错误。我只想在用户忘记提供值并单击提交时显示输入框验证错误,或者当给出无效数据时,onchange 应该在给出有效选项时显示和隐藏。

标签: reactjs react-hooks


【解决方案1】:

【讨论】:

  • 谢谢@Sheldon....请找到我更新的代码...问题是,一旦我在下拉列表中选择值,下拉验证就会消失,但是当输入框出现时,它会显示验证错误,因为已经为下拉框单击了提交按钮。期待您的回复。
猜你喜欢
  • 2018-01-02
  • 2021-07-07
  • 1970-01-01
  • 2021-11-10
  • 1970-01-01
  • 2022-01-25
  • 1970-01-01
  • 1970-01-01
  • 2021-03-23
相关资源
最近更新 更多