未捕获的类型错误:无法读取 React 中未定义的属性“匹配”

时间:2021-05-27 18:55:29

标签: javascript reactjs react-hooks

我正在尝试制作一个简单的提交表单。我相信我的邮件格式的 json 是正确的。使用邮件格式的 json,我试图检查已提交的电子邮件是否有效。但是由于某种原因,react 似乎没有识别 match() 方法。我收到一条错误消息,指出“无法读取未定义的属性‘匹配’。”我对修复的猜测涉及异步编程,但我不够熟练,无法提出修复。我正在使用 React 钩子和状态。

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("");
    }

1 个答案:

答案 0 :(得分:0)

根据您的最后一行和您的 setTextHandler,两个 setText 函数都将文本值设置为字符串,因此只需更改此行即可:

if(text.match(mailformat)) {
  // your code
} else if (!text.match(mailformat)) {
  // your code
}