Как сделать валидацию с использованием регистра Switch или другим способом, чтобы уменьшить количество кода в React native? - PullRequest
1 голос
/ 26 марта 2019

Можно ли использовать регистр Switch для проверки в React Native? Пожалуйста, дайте мне правильный путь. Ниже мой код

 handleSubmit=()=>{
  this.setState({ isLoading : true});

  emailValid = /^([\w.%+-]+)@([\w-]+\.)+([\w]{2,})$/i;
  mobileValid = /^[0]?[789]\d{9}$/;

  if(this.state.first_name == ''){
    this.setState({ isLoading : false});
    Toast.show('Please enter first name',Toast.SHORT);
  }
  else if(this.state.mobile_no.length < 10){
    this.setState({ isLoading : false});
    Toast.show('Please enter at least 10 digits',Toast.SHORT);
  }
  else if(this.state.password == ''){
    this.setState({ isLoading : false});
    Toast.show('Please enter password',Toast.SHORT);
  }
  else if(this.state.password.length < 8){
    this.setState({ isLoading : false});
    Toast.show('Please enter strong password',Toast.SHORT);
  } 
  else{
   }
}

Ответы [ 3 ]

2 голосов
/ 26 марта 2019

Если вы хотите использовать корпус переключателя, вы можете сделать это следующим образом. Пожалуйста, смотрите ниже код

  handleSubmit = () => {
      this.setState({ isLoading: true });

      emailValid = /^([\w.%+-]+)@([\w-]+\.)+([\w]{2,})$/i;
      mobileValid = /^[0]?[789]\d{9}$/;

      switch (true) {
        case this.state.first_name === '': 
          this.handleError('Please enter first name''); //call method to display toast
          break;
        case this.state.mobile_no.length < 10:
          this.handleError('Please enter at least 10 digits');
          break;
        case this.state.password === '':
          this.handleError('Please enter password');
          break;
        case this.state.password.length < 8:
          this.handleError('Please enter strong password');
          break;
        default:
          //otherwise perform your logic
          break;
      }
    }

handleError=(message)=>{
       this.setState({ isLoading: false });
          Toast.show(message, Toast.SHORT);
}
1 голос
/ 26 марта 2019

Для меньшего кода, я бы сделал следующее:

let message=''
this.state.first_name==='' ? message='Please enter  name': null;
this.state.mobile_no.length < 10?message='Please enter at least 10 digits':null;
this.state.password === ''?message='Please enter password':null;
this.state.password.length < 8?message='Please enter strong password':null;
if(message){
    this.setState({ isLoading : false});
    Toast.show(message,Toast.SHORT);
}else{
   //every validation is fine do whatever
}
0 голосов
/ 26 марта 2019

Для меньшего количества кода и множества форм вы можете использовать validate.js.Вы можете установить npm здесь: http://validatejs.org/ и использовать этот блог: https://medium.com/@pavsidhu/validating-forms-in-react-native-7adc625c49cf

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...