【发布时间】:2021-05-27 17:33:55
【问题描述】:
我对 JS 和 React 还很陌生,我正在使用 React Hook Form 我必须检查在我的表格中输入的网站是否存在。 如果 URL 不存在,我必须在网站字段下显示一条错误消息“网站不可用”,这将使用 FormError 组件呈现。
(这是一个名字字段,但由于我使用的是普通的 TextField 组件,它也应该在这里工作)
所以,我正在使用“url-exists”包来测试网站 URL 是否存在,如果该网站不存在,它应该会生成一个错误为“网站不可用”。
我就是用这段代码来实现的。
const websiteCheck = (value) => {
let str = value;
let message = "";
let urlCheck = str.indexOf("http://") == 0 || str.indexOf("https://") == 0;
if (!urlCheck) {
console.log("Protocol doesn't exist!");
str = "http://" + str;
} else {
console.log("Protocol exists!");
}
urlExists(str, function (err:any, exists:any) {
if (!exists) {
message = "Website doesn't exists!" //Just for testing
console.log("Not available: ", str, exists);
} else {
message = "Website exists!"
console.log("Available: ", str, exists);
}
// console.log(exists); // true
});
return message;
}
我称它为:
return(
.....
<TextField
key={fieldName}
id={fieldName}
.......
inputRef={register({
websiteCheck(value)
........
/>
这在理想情况下应该可以工作,但即使我输入正确且有效的 URL,它也会在 console.log() 中给我“不可用”消息。 它仍然不会呈现我设置的消息。
到目前为止,我从调试中发现的是:
- 当我提交表单时,我输入的 URL 被接受,但它不会进入我的 if(!exists)..else 块,并且我在控制台中看到“不可用”。
- 它第二次提交进入 if(!exists)...else 块并显示“不可用”的空值(或空间 idk)
我应该怎么做才能解决这个问题?
【问题讨论】:
标签: javascript node.js reactjs react-hook-form