首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >反应状态管理

反应状态管理
EN

Stack Overflow用户
提问于 2020-04-01 21:12:17
回答 1查看 47关注 0票数 0

我是新的反应,所以我的想法是,当按钮点击提交电子邮件,它检查电子邮件语法和黑名单数组,其中包含的电子邮件无法输入,如果它的假然后文字弹出(错误),我希望警告显示后,按钮单击,但我希望警告消失,一旦输入的状态再次改变。会很感激你的帮助

代码语言:javascript
复制
export default class EmailSettings extends React.Component {

constructor(props) {
    super(props);
    this.state = {
        email: '',
        validEmail:true,
        showMessage: false
    };
}

handleEmailChange = (e) => {
    this.setState({email: e.target.value});
};

handleSubmitEmail = (e) => {
    e.preventDefault();
    const email = this.state.email;
    if(this.validateEmail(email)) {
        this.setState({validEmail: true})
        this.setState({showMessage: false});
    }else{
        this.setState({validEmail: false })
        this.setState({showMessage: true});
    }
};


  <Input style={{marginTop: '20px', width: '360px',borderColor: !this.state.validEmail ? 'red': null}}
                           placeholder={emailPlaceHolder}
                           onChange={this.handleEmailChange}/>
                    <StyledButton type="primary" onClick={this.handleSubmitEmail}>{submit}</StyledButton>
                    <div>{this.state.showMessage ? <Error>Syntax error or email is not supported</Error> : !this.state.showMessage}</div>

现在发生的事情是消息出现,输入边框变成红色,但是在状态更改之后,红色消息或框边框没有被删除。

在这里输入图像描述

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-01 21:17:37

试试这个:

代码语言:javascript
复制
handleEmailChange = (e) => {
        this.setState({email: e.target.value,
    validEmail:true,
    showMessage:false});
    };

在输入时,只需设置非错误状态,以便在提交之后,如果出现错误并且用户再次键入错误,则重新设置错误。

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

https://stackoverflow.com/questions/60980397

复制
相关文章

相似问题

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