如何在提交前验证输入?
How to validate input before submitting?
我想在提交前验证输入。但是出了点问题,每次 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>
因为 error
变量只会在组件的下一次渲染中包含新值。这是由于 useState
的方式,或者更确切地说是一般工作中的 Hooks。
相反,您必须 return 结果在验证函数中是否有效。
const validate = () => {
value.length>5?setError("Some errors"):setError("");
return value.length <= 5;
}
<Button onClick={() => {
const isValid = validate();
if(isValid) submit()
}> Submit </Button>
我想在提交前验证输入。但是出了点问题,每次 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>
因为 error
变量只会在组件的下一次渲染中包含新值。这是由于 useState
的方式,或者更确切地说是一般工作中的 Hooks。
相反,您必须 return 结果在验证函数中是否有效。
const validate = () => {
value.length>5?setError("Some errors"):setError("");
return value.length <= 5;
}
<Button onClick={() => {
const isValid = validate();
if(isValid) submit()
}> Submit </Button>