提交前如何验证输入?

时间:2020-10-22 20:47:00

标签: javascript reactjs validation react-hooks form-submit

我想在提交之前验证输入。但是每次提交()运行:((

const [value, setValue] = React.useState("");
const [error, setError] = React.useState("");
const validate = () => {
  value.length>5?setError("Some errors"):setError("");
}
const submit = () => {do something...}
...
<input onChange={e => setValue(e.target.value)} />

<Button  onClick={() => {
  validate();
  if(!error.length) submit()
}> Submit </Button>

1 个答案:

答案 0 :(得分:2)

因为error变量将仅在组件的下一次渲染中包含新值。这是由于useState的原因,或者说是一般工作中的Hooks。

相反,您必须在validate函数中返回结果是否有效。

const validate = () => {
  value.length>5?setError("Some errors"):setError("");
  return value.length <= 5;
}

<Button  onClick={() => {
  const isValid = validate();
  if(isValid) submit()
}> Submit </Button>