Сценарий React java: функция IF работает только один раз при нажатии кнопки - PullRequest
0 голосов
/ 31 марта 2020

Так что я использую реагировать нативный и Firebase DB.

При нажатии кнопки формы регистрации у меня есть функция, которая создает пользователя, а также загружает некоторую информацию, например, городской телефон lalala:

   handleSignUp = () => {
    Fire.shared.createUser(this.state.email, this.state.password, this.state.name, this.state.avatar, this.state.mobile, this.state.pickerSelection, this.state.errorMessage)

    if (this.state.name == "") this.setState({ errorMessage: "Vartotojo vardas privalomas" });
        else  if (this.state.email == "") this.setState({ errorMessage: "El. pašto adresas privalomas" });
            else if (this.state.password == "") this.setState({ errorMessage: "Slaptažodis privalomas" });
                else  if (this.state.password2 == "") this.setState({ errorMessage: "Pakartokite slaptažodį" });
                    else  if (this.state.city == "") this.setState({ errorMessage: "Telefono nr. privalomas" });    
                        else  if (this.state.mobile == "") this.setState({ errorMessage: "Miestas privalomas" });    
                             else if ( this.state.password != this.state.password2) this.setState({ errorMessage: "Slaptažodžiai nesutampa" });
                                else { 
                                    Fire.shared.createUser(this.state.email, this.state.password, this.state.name, this.state.avatar, this.state.mobile, this.state.pickerSelection);
                                };
   };

Так работает функция первого раза. любой из этих IFS. если я оставляю пустой ввод, я вижу сообщение об ошибке, но если я нажимаю кнопку еще раз, это все равно создает пользователя, даже с пустыми значениями ... как в буквальном смысле, все это работает только один раз ...

Здесь моя функция создания пользователя:


   handleSignUp = () => {
    Fire.shared.createUser(this.state.email, this.state.password, this.state.name, this.state.avatar, this.state.mobile, this.state.pickerSelection, this.state.errorMessage)

    if (this.state.name == "") this.setState({ errorMessage: "Vartotojo vardas privalomas" });
        else  if (this.state.email == "") this.setState({ errorMessage: "El. pašto adresas privalomas" });
            else if (this.state.password == "") this.setState({ errorMessage: "Slaptažodis privalomas" });
                else  if (this.state.password2 == "") this.setState({ errorMessage: "Pakartokite slaptažodį" });
                    else  if (this.state.city == "") this.setState({ errorMessage: "Telefono nr. privalomas" });    
                        else  if (this.state.mobile == "") this.setState({ errorMessage: "Miestas privalomas" });    
                             else if ( this.state.password != this.state.password2) this.setState({ errorMessage: "Slaptažodžiai nesutampa" });
                                else { 
                                    Fire.shared.createUser(this.state.email, this.state.password, this.state.name, this.state.avatar, this.state.mobile, this.state.pickerSelection);
                                };
   };

Может быть, это из-за ASYN C и AWAIT? Я использую только из-за учебника, я не уверен, что это такое.

1 Ответ

1 голос
/ 01 апреля 2020

вы вызываете Fire.shared.createUser () два раза, первый раз перед вашими проверками (так что он все равно создаст пользователя), второй раз, когда ваши проверки пройдены;

...