Служба навигации не работает, пока я работаю с проверкой формы - PullRequest
1 голос
/ 23 апреля 2020

Я использовал ориентировочный валидатор для проверки формы. Валидация работает отлично. Тем не менее, навигация перестает работать, когда она записана внутри try, когда все операции проверки выполнены.

state ={
         name:'',
         email:'',
         password:'',
         password_confirmation:'',
         error:{},
         userAllData:'',
         userData:''

        }

Использовали asyn c и предоставили правила для электронной почты и пароля, тип данных и формат.

  registerUser = async (data) => {
    const rules = {

      email:'required|email',
      password:'required|string|min:5'
  }

Отображаемые сообщения об ошибках и топор ios Вызов API.

  const messages = {

    required: (field) => `${field} is required.`,
    'email.email': ' The email is required. ',
    'password.min': 'Password is too short.',
 }



 try {

    await   validateAll(data, rules, messages)

    const response = await  axios.get('https://react-blog- 
    api.bahdcasts.com/api/auth/login', {

      email:data.email,
      password:data.password
  })

      this.setState({
        userData:response.data.data.user,
        userAllData:response.data.data
      })

      NavigationService.navigate('PublicHome')

      }

       catch(errors){
        const formattedErrors = {}

      if(errors.response && errors.response.status === 422){
          formattedErrors['email'] = errors.response.data['email'][0]
          this.setState({ error:formattedErrors, })

      }

      else{
           errors.forEach(error => formattedErrors[error.field] = error.message)

           this.setState({ error:formattedErrors })
       }
   } 
}

Внутри рендера: у меня есть текстовые поля электронной почты и пароля с кнопкой, внутри которой я звоню this.registerUser(this.state) на пресс обработчик.

    <Button style={Styles.btn} 
        onPress={() => { this.registerUser(this.state) }}>
        <Text style={Styles.loginBtnText}>{'Login'.toUpperCase()}</Text>
   </Button>
...