首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >React功能组件中的电子邮件验证

React功能组件中的电子邮件验证
EN

Stack Overflow用户
提问于 2022-03-25 05:32:14
回答 2查看 242关注 0票数 0

使用,我试图验证电子邮件地址。下面是我的密码。

问题是,当我尝试输入任何文本时,什么都不会发生,它不允许输入任何字母。

下面是我的组件代码,请帮助我

代码语言:javascript
复制
const UpdateEmailAddress: React.FC<Step> = (props: Step) => {
  const [customerEmail, setCustomerEmail] = useState<any>('');
  const [checkValidEmail, setcheckValidEmail] = useState<boolean | null>(null);
    
  const emailValidate = (value: any) => {
    if (!validEmailRegex(value)) {
      setcheckValidEmail(true);
    } else {
      setcheckValidEmail(false);
    }
  };

  const handleChange = (e: any) => {
    if (e.target.value) {
      setCustomerEmail(e.target.value);
    }
  };

  return (
    <>
      <div className="step container update-email-container pt-10" ref={props.domRef}>
        <div className="row">
          <div className="col-md-4">
            <div className="mb-4">
              <TextField
                aria-label={content.emailAddress.header}
                enableClearText
                errormessage={content.emailAddress.emailError}
                helptext={content.emailAddress.helptext}
                id="emailAddress"
                isValid={checkValidEmail}
                label={content.emailAddress.emailAddress}
                maxLength={0}
                name="emailAddress"
                tooltipText=""
                type="email"
                onChange={(e:any) => handleChange(e)}
                value={customerEmail}
              />
            </div>

            <ButtonAction
              onClick={emailValidate(customerEmail)}
              className="load-more-button mb-0"
              type="button"
              aria-label={content.emailAddress.nextButton}
            >
              {content.emailAddress.nextButton}
            </ButtonAction>
          </div>
        </div>
      </div>
    </>
  );
};
EN

回答 2

Stack Overflow用户

发布于 2022-03-25 05:44:04

您在onChange方法中的逻辑是错误的--应该是

代码语言:javascript
复制
onChange={(e: React.ChangeEvent<HTMLInputElement>) => setCustomerEmail(e.target.value)}
票数 1
EN

Stack Overflow用户

发布于 2022-03-25 05:53:15

您必须定义onChange()方法。

应该是这样的

代码语言:javascript
复制
const handleChange = (e) => {
    setCustomerEmail(e.target.value);
  };

然后,您将能够输入textfield。

其次,您必须在emailvalidate()中传递onClick() of按钮中的值。

代码语言:javascript
复制
<ButtonAction onClick={()=>emailValidate(customerEmail)} className="load-more-button mb-0" type="button" aria-label={content.emailAddress.nextButton}>
              {content.emailAddress.nextButton}
            </ButtonAction>

并在emailValidate(value)中删除emailValidate(value)参数,因为它只使用value而不使用e

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71612575

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档