Javascript 提交前如何验证输入?

Javascript 提交前如何验证输入?,javascript,reactjs,validation,react-hooks,form-submit,Javascript,Reactjs,Validation,React Hooks,Form Submit,我想在提交之前验证输入。但每次运行submit()时都出现了问题:(( const[value,setValue]=React.useState(“”); const[error,setError]=React.useState(“”); 常量验证=()=>{ value.length>5?setError(“某些错误”):setError(“”); } const submit=()=>{做点什么…} ... setValue(e.target.value)}/> { 验证(); 如果(!er

我想在提交之前验证输入。但每次运行submit()时都出现了问题:((

const[value,setValue]=React.useState(“”);
const[error,setError]=React.useState(“”);
常量验证=()=>{
value.length>5?setError(“某些错误”):setError(“”);
}
const submit=()=>{做点什么…}
...
setValue(e.target.value)}/>
{
验证();
如果(!error.length)提交()
}>提交

因为
error
变量只会在组件的下一次呈现中包含新值。这是由于
使用state
的方式,或者更确切地说是在常规工作中挂钩

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

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

<Button  onClick={() => {
  const isValid = validate();
  if(isValid) submit()
}> Submit </Button>
const validate=()=>{
value.length>5?setError(“某些错误”):setError(“”);
返回值.length提交

因为
error
变量只会在组件的下一次呈现中包含新值。这是由于
使用state
的方式,或者更确切地说是在常规工作中挂钩

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

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

<Button  onClick={() => {
  const isValid = validate();
  if(isValid) submit()
}> Submit </Button>
const validate=()=>{
value.length>5?setError(“某些错误”):setError(“”);
返回值.length提交

setError是异步的,在重新加载之前,错误的新值不会被更新。可能会更改validate以返回字符串而不更新状态值,然后可以在按钮onClick中设置错误,并在if语句中检查它。如何传递该错误?setError不是异步的。它是同步的,但是原始
错误的值变量不会更改,因为它已被分配。它需要重新渲染(再次调用组件函数)重新分配变量。这是否回答了您的问题?setError是异步的,在重新加载之前不会更新错误的新值。可能更改validate以返回字符串而不更新状态值,然后可以在按钮onClick中设置错误,并在if语句中检查它。如何传递此错误?setError不是异步的。它是s同步,但原始
error
变量的值不会更改,因为它已被分配。需要重新渲染(再次调用组件函数)才能重新分配变量。这是否回答了您的问题?