Моя задача - показать компонент загрузки, когда данные с сервера еще не поступили.
export const LoaderComponent = () => (
<View style={styles.center}>
<ActivityIndicator size="large" />
</View>
);
const styles = StyleSheet.create({
center: {
.....
},
});
Я создал файл состояния для отображения загрузочного компонента.
import { observable, action } from 'mobx';
class LoaderState {
@observable loading: boolean = true;
@action showLoader() {
this.loading = true;
}
@action hideLoader() {
this.loading = false;
}
}
export default new LoaderState();
При авторизации пользователя я отображаю компонент загрузки, после получения данных с сервера скрываю компонент загрузки. Я сделал искусственную задержку в две секунды.
class AuthState {
@observable email: string = '';
@observable password: string = '';
@action authentication(data: IAuth) {
console.log('Action authentication');
LoaderState.showLoader();
....
setTimeout(() => {
LoaderState.hideLoader();
console.log('Change state loader', LoaderState.loading);
}, 2000);
}
}
export default new AuthState();
На следующем экране я проверяю, установлен ли флаг загрузки, показываю компонент загрузки и, если нет, скрываю его.
export const ProvidersScreen = () => {
console.log(LoaderState.loading);
if (LoaderState.loading) {
return <LoaderComponent />;
}
return (
<View>
....
</View>
);
};
Проблема в том, что загружаемый компонент всегда отображается, а при изменении состояния он не скрывается. Почему компонент загрузки не скрывается?