Javascript 未捕获类型错误:无法读取属性';匹配';在反应中未定义的
我想做一个简单的提交表格。我相信我的邮件格式的json是正确的。使用mailformat中的json,我试图检查提交的电子邮件是否有效。但是由于某些原因,react似乎无法识别match()方法。我得到一个错误,声明“无法读取未定义的属性‘match’”。我猜测修复涉及异步编程,但我没有足够的技能来提出修复。我用的是react钩子和stateJavascript 未捕获类型错误:无法读取属性';匹配';在反应中未定义的,javascript,reactjs,react-hooks,Javascript,Reactjs,React Hooks,我想做一个简单的提交表格。我相信我的邮件格式的json是正确的。使用mailformat中的json,我试图检查提交的电子邮件是否有效。但是由于某些原因,react似乎无法识别match()方法。我得到一个错误,声明“无法读取未定义的属性‘match’”。我猜测修复涉及异步编程,但我没有足够的技能来提出修复。我用的是react钩子和state function Form({submit, setSubmit, text, setText}) { let emailArray = [];
function Form({submit, setSubmit, text, setText}) {
let emailArray = [];
//handlers. Need for submit button and input for text
const setTextHandler = (e) => {
// console.log(e.target.value)
setText(e.target.value);
};
const setSubmitHandler = (e) => {
let mailformat = /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/;
e.preventDefault();
setSubmit(text);
console.log(text)
if(text.value.match(mailformat)) {
console.log("it works")
emailArray.push(text);
return true
} else if (!text.value.match(mailformat)) {
console.log("FAIL");
return false
}
console.log(emailArray[0])
console.log(emailArray)
setText("");
}
根据最后一行和setTextHandler,这两个setText函数都将文本值设置为字符串,因此只需更改这一行即可:
if(text.match(mailformat)) {
// your code
} else if (!text.match(mailformat)) {
// your code
}
关于你的“邮件格式”的一个说明:现在已经不是1992年了,现在的有效电子邮件基本上是“里面有并且只有一个
@
吗?酷,这是一个有效的电子邮件地址”你必须使用text.match
,因为你直接将输入存储在e.target.value
中。您可以使用RegExp.test
方法来代替匹配