javascript - 反应检查 Const 是否为空
问题描述
你好,我是新来的反应,我有一个问题..我想设置一个错误消息并检查它是否为空。
这是我的代码:
const [errormsg, setErrorMsg] = useState("");
const register = (e) =>{
if(firstname === "" || lastname === ""){
setErrorMsg("Please fill out all Gaps!");
e.preventDefault();
}
if(errormsg === ""){
//DO SOMETHING
}
}
但是每次它都会跳过应该停止的部分。因为即使姓氏为空,它也会继续,但我不知道为什么,因为它应该停在那里。
我还添加了 e.preventDefault(); 因为我想向用户显示错误消息,如果它在每次提交后重新加载,这不起作用
解决方案
React 状态是一种异步,你不能指望下一行有状态集,所以你应该做的是
const [errormsg, setErrorMsg] = useState("");
const register = (e) =>{
if(firstname === "" || lastname === ""){
setErrorMsg("Please fill out all Gaps!");
e.preventDefault();
}
}
useEffect(() => {
if(errormsg === ""){
//DO SOMETHING
}
}, [errormsg])
useEffect 中的回调将在每次errormsg
更改时执行。
推荐阅读
- azure - Azure 通知中心:集线器之间的安装 ID 是唯一的吗?
- c# - 在特定字符串的最后一个实例之后提取文本块
- firebase - 尝试在 Flutter 项目上添加 Firebase 时遇到错误
- tensorflow2.0 - 完成 GeneratorDataset 迭代器时发生错误:已取消:操作已取消
- scala - 有没有办法使用 Scala 编译器对布尔表达式进行类型检查?
- laravel - 是否可以在通过 get() 函数调用的 Laravel 集合中使用 where 子句
- express - NestJS Guard 中重定向期间出现异常 - 错误 [ERR_HTTP_HEADERS_SENT]:在将标头发送到客户端后无法设置标头
- security - 为什么 ASP.Identy 使用 Base32 对 SecurityStamp 进行编码(内部实现)
- python - 堆叠光栅图像并在python中压缩它
- php - DOCKER - 带有消息“SQLSTATE [42000]”的未捕获异常“PDOException”:语法错误或访问冲突