как насчет проверки, если вход в систему не удается - PullRequest
0 голосов
/ 20 сентября 2019

если условие правильное, то перенаправить на дом, но если условие неправильное, ничего не делать, я хочу, если условие неверное, он будет отображать предупреждения, заполненные из API ответа, например "STATUS_CODE == '400 '' неправильный адрес электронной почты или пароль

export class Login extends Component {
  constructor(props){
    super(props)
    this.state = {
      MEMBER_EMAIL:'',
      MEMBER_PASSWORD:'',
      device_type:'3',
      redirect: false,
      loading:false,
      error:''
    };
    this.handleChange = this.handleChange.bind(this);
    this.handleSubmit = this.handleSubmit.bind(this);
  }

  handleChange(e){
    this.setState({
      [e.target.name] : e.target.value
    })
  }

  async handleSubmit(e){
    e.preventDefault()
    if(this.state.MEMBER_EMAIL && this.state.MEMBER_PASSWORD){
      await API.post('member/login', this.state)
      .then((response) => {
        let responseJson = response
        // console.log(responseJson.data)
        if(responseJson.data.STATUS_CODE === '200'){
          this.props.resSave('data', JSON.stringify(responseJson.data.DATA))
          this.setState({
            redirect: true
          })
        }
      })
    }
  }

  render() {

    if(this.state.redirect){
      return <Redirect to='/home' />
    }

    return (
      <Container>
        <Padding />
          <Row>
            <Col md={{ span: 6, offset: 3 }} className='mx-auto'> 
            <Card>
              <CardContent>
                <h3><b>Login</b></h3>
                <p><b>Welcome back to <i className='text-warning'>privilegez</i></b></p>
                <br />
                <Form onSubmit={this.handleSubmit}>
                  <Form.Group controlId='formBasicEmail'>
                    <Form.Label><b>Email or Username</b></Form.Label>
                    <Form.Control type='email' name='MEMBER_EMAIL' placeholder='Enter email' onChange={this.handleChange} />
                  </Form.Group>
                  <Form.Group controlId='formBasicPassword'>
                    <Form.Label><b>Password</b></Form.Label>
                    <Form.Control type='password' name='MEMBER_PASSWORD' placeholder='Password' onChange={this.handleChange} />
                  </Form.Group>
                  {/* <Partnership /> */}
                  <p className='text-muted float-right'><b>Forgot password?</b></p>
                    <Button type='submit' variant='warning' className='text-white' size='md' block>Login</Button>
                </Form>
                <br/>
                <p className='text-muted text-center'><b>Or</b></p>
                <p className='text-primary text-center'><b><i className='fa fa-facebook-official' aria-hidden='true'></i>&nbsp;Login with facebook</b></p>
                <br />
                <p className='text-muted text-center'><b>Dont have an account&nbsp;<Link to='/register'><span className='text-warning'>Register</span></Link></b></p>
              </CardContent>
            </Card>
          </Col>
        </Row>
      </Container>
    )
  }
}

Я пробовал несколько раз, если условие неверно, тогда он ничего не делал, как вывести предупреждение, если условие неверно

1 Ответ

0 голосов
/ 20 сентября 2019

onSubmit of Form автоматически обновляет ваше приложение.

почему бы вам просто не переместить функцию handleSubmit на событие Button onClick.

Вот моя рекомендация

async handleSubmit(e){
    e.preventDefault()
    if(this.state.MEMBER_EMAIL && this.state.MEMBER_PASSWORD){
      await API.post('member/login', this.state)
      .then((response) => {
        let responseJson = response
        // console.log(responseJson.data)
        if(responseJson.data.STATUS_CODE === '200'){
          this.props.resSave('data', JSON.stringify(responseJson.data.DATA))
          this.setState({
            redirect: true
          })
        } else if (// your condition // ) {
          // you do something here
      })
    }
  }

и удалите onSubmit из вашей и измените свою кнопку следующим образом

<Button onClick={this.handleSubmit} variant='warning' className='text-white' 
size='md' block>Login</Button>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...