首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Semantic-ui-react成功消息和条件

Semantic-ui-react成功消息和条件
EN

Stack Overflow用户
提问于 2019-04-08 04:03:59
回答 1查看 1.1K关注 0票数 0

我有一个表单,我想在其中利用semantic-ui-react库提供的success message

在我的表单组件中,我创建了以下键:

代码语言:javascript
运行
复制
class Login extends Component {
  constructor(props) {
    super(props)

    this.state = {
      isLoggedIn: false,
      username: '',
      password: '',
      usernameError: false,
      passwordError: false,
      formError: false
    }
 .... rest of the class below

这是用于提交的handleSubmit

代码语言:javascript
运行
复制
handleSubmit(event) {
  event.preventDefault()

  var { username, password} = this.state
  var mailFormat = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/

  if (!username.match(mailFormat)) {
    this.setState({ usernameError: true, formError: true })
  } else {
    this.setState({ usernameError: false, formError: false })
  }
  if (password.length <= 8) {
    this.setState({ passwordError: true, formError: true })
  } else {
    this.setState({ passwordError: false, formError: false })
  }

window.fetch(....)
}


  render() {
    var { username, password, usernameError, passwordError, formError, isLoggedIn } = this.state
    return (
      <div className='login-form'>

        <Grid textAlign='center' style={{ height: '100%' }} verticalAlign='middle'>
          <Grid.Column style={{ maxWidth: 450 }}>
            <Header as='h2' color='teal' textAlign='center'>
              {isLoggedIn ? `Register for an account` : ` Log-in to your account`}
            </Header>
            <Form size='large' onSubmit={this.handleSubmit} error={formError && usernameError && passwordError } success={ formError } >
            {usernameError ? <Message error header='See message below' content='Email is not incorrect format'/> : null }
            {passwordError ? <Message error header='See message below' content='Password should be greater than eight characters'/> : null }
            {(formError === false) ? <Message success header='Your user registration was successful' content='You may now log-in with the username you have chosen'/> : null }
              <Segment stacked>
                <Form.Input
                  fluid
                  icon='user'
                  iconPosition='left'
                  placeholder='E-mail address'
                  name='username'
                  value={username}
                  onChange={this.handleChange}
                  error={usernameError}
                />
                <Form.Input
                  fluid
                  icon='lock'
                  iconPosition='left'
                  placeholder='Password'
                  name='password'
                  value={password}
                  onChange={this.handleChange}
                  error={passwordError}
                />
                <Button color='teal' fluid size='large' disabled={!this.state.username || !this.state.password}>
                  {isLoggedIn ? `Register` : `Log-in`}
                </Button>
              </Segment>
            </Form>
            {!isLoggedIn
              ? <Message>
                New to us?
                <a onClick={this.handleIsLoggedInClick} href='#'> Register!</a>
               </Message>
              : <Message>
                <a onClick={this.handleIsLoggedInClick} href='#'>Back to Login</a>
                </Message>
            }
          </Grid.Column>
        </Grid>
      </div>
    )
  }

基本上,当表单字段被满意地填充时,一旦formError变为false,此行就不应该触发成功消息吗?

代码语言:javascript
运行
复制
{(formError === false) ? <Message success header='Your user registration was successful' content='You may now log-in with the username you have chosen'/> : null } 
EN

回答 1

Stack Overflow用户

发布于 2019-04-08 04:15:58

您必须:

代码语言:javascript
运行
复制
<Form size='large' onSubmit={this.handleSubmit} error={formError && usernameError && passwordError } success={ formError } >

与使用formError相比,在您的州中使用单独的formSuccess字段会更好。

现在,您的代码显示当存在formError时显示成功,这并没有什么实际意义。你甚至可以使用例如!formError

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

https://stackoverflow.com/questions/55563170

复制
相关文章

相似问题

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