ActivityIndicator с setTimeout не работает - реагирует на родную выставку - PullRequest
0 голосов
/ 26 марта 2020

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

import {  Text, View, ActivityIndicator} from 'react-native';

const LoginScreen = ({ navigation }) => {

 const [isLoading, setIsLoading] = useState(false);

 const _onLoginPressed = () => {
    setIsLoading(true);


    const user = {
      Email: email.value,
      PasswordTourist: password.value
    };


    fetch(apiUrl, {
      method: 'POST',
      body: JSON.stringify(user),
      headers: new Headers({
        'Content-type': 'application/json; charset=UTF-8'
      })

    })
      .then(res => {
        return res.json()
      })
      .then(
        (result) => {
          closeActivityIndicator();
        const profile = result;

          if(profile.Email === null || profile.PasswordTourist === null){
          ...code....
            setIsLoading(false)
          }
          else{

              navigation.navigate('Dashboard', { profile: profile })

          }

        },
        (error) => {
          console.warn("err post=", error);
        });
     }
  };

const closeActivityIndicator = async => setTimeout(() => {setIsLoading(false)}, 30000)

return (
    <Background>
      code......
      {isLoading && <ActivityIndicator size="large" color="#fff" />}
code....
 </Background>
)
...