Zacznijmy od zarządzania stanem ładowania tutaj na ekranie uwierzytelniania, ponieważ oczywiście chcę przekazać
użytkownikowi informacje zwrotne, gdy obecnie czekamy na odpowiedź.
W tym celu możemy zaimportować wskaźnik aktywności, który już znasz i zarządzać tutaj
stanem ładowania, dodając tutaj inny stan, isLoading i ustaw isLoading, który inicjujemy na false, ponieważ początkowo nie ładujemy, a
teraz tutaj, gdy jesteśmy w tym auth handler, mogę tu dodać asynchronię, ponieważ oczywiście rejestracja tutaj zwraca obietnicę, to
samo dla logowania, więc
funkcje twórcy tych akcji zwracają obietnice. Możemy więc poczekać na wynik wysyłki,
która ostatecznie wykorzysta otrzymane obietnice i zasadniczo rozpocznie cały ten proces, a zanim na to czekamy,
mogę ustawić isLoading na wartość true, więc kiedy rozpoczniemy cały
proces, zanim wyślemy zapytanie a następnie ustawimy IsLoading na false, gdy skończymy z tym
żądaniem, bez względu na to, czy się nie powiedzie.
A teraz isLoading może być używany do wyświetlania
tarczy ładującej, to od Ciebie zależy, gdzie ją wyświetlisz, na przykład możesz powiedzieć, że chcesz zastąpić
ten przycisk rejestracji tarczy ładującej.
Możemy więc powiedzieć, że jeśli isLoading jest prawdą, chcę
pokazać wskaźnik aktywności w ten sposób, w przeciwnym razie
pokażę przycisk, więc jest to składnia,
której moglibyśmy użyć, ustaw
tutaj rozmiar na mały, a kolor na Kolory. powiedzmy pierwotnie. Teraz, jeśli spróbujemy i
wrócimy, tutaj na iOS, jeśli spróbuję się zalogować, rzeczywiście widzę ładowanie tarczy, a potem wracam, więc
to działa, teraz do obsługi błędów.
Do obsługi błędów dowiesz się również, jak to działa.
Tutaj oczywiście możesz również zarządzać stanem błędu, możesz
również użyć reduktora, aby połączyć ładowanie i stan błędu w jeden obiekt,
ale
zrobię to w ten sposób, błąd i ustawię błąd za
pomocą stanu użycia, który początkowo nie nie przypisuj wartości, aby początkowo była niezdefiniowana, a następnie tutaj, możemy owinąć próbę złapania
tej wysyłki tutaj, gdzie otrzymujemy potencjalny błąd i ustawić nasz
błąd na ten komunikat o błędzie, który otrzymujemy i zanim wyślemy żądanie, Chcę również ustawić
mój błąd z powrotem na zero. Więc teraz przechowujemy potencjalny błąd w ustawionym błędzie i
chcę po prostu wysłać alert, pokazać użytkownikowi alert, jeśli otrzymamy błąd.
W tym celu musisz upewnić się, że importujesz alert z React Native, a
także używasz efektu z reakcji, ponieważ efekt użycia pozwala nam reagować na zmiany w
stanie błędu i wyświetlać alert o błędzie, jeśli wystąpi błąd. Więc może tutaj po skonfigurowaniu reduktora możemy dodać efekt użycia, a moją
zależnością jest zmienna lub stała stanu błędu, a jeśli mamy błąd, więc
jeśli jest to prawda, to chcę pokazać alert z alertem Interfejs API, w którym mówię, że wystąpił błąd, a moja wiadomość
jest błędem, który powinien być ciągiem, i dodam przycisk, w którym mam tekst OK,
i oczywiście możesz dodać więcej przycisków, w których robisz różne rzeczy.
Teraz możemy to zasymulować w kreatorze akcji, przechodząc tam i logując się, powiedzmy, że usuwamy tutaj D,
aby na końcu był to nieprawidłowy adres URL. Jeśli teraz spróbujemy się zalogować tutaj, pojawia
się ten błąd.
Teraz
to dobrze, ale są też inne rodzaje błędów, które chcę rozwiązać, na przykład co się stanie, jeśli
zaloguję się przy użyciu adresu e-mail, który nie istnieje? Oczywiście chcę też pokazać użytkownikowi błąd i robię
to, ale pokazuję tylko, że coś poszło nie tak, co nie jest dokładnie tym, co chciałbym pokazać.
Teraz pokazuję ten błąd, ponieważ w kreatorze akcji tutaj, jeśli odpowiedź nie jest w porządku, rzucam coś poszło
nie tak.
Problem polega na tym, że wysyłamy niepoprawny adres e-mail lub nieprawidłowe hasło, przy
okazji rejestracji, jeśli wyślemy coś, co nie jest e-mailem lub hasłem, które jest zbyt krótkie, jeśli tak się
stanie, otrzymujemy odpowiedź z kodem stanu 400 coś, a my otrzymujemy pewne szczegóły błędu jako część odpowiedzi i
teraz
dzięki naszej obsłudze błędów, nie widzimy
ich, więc musimy to zmienić. Zamiast natychmiast zgłaszać tutaj błąd, jeśli
odpowiedź nie jest w porządku, nadal chcę się temu przyjrzeć.
Więc będę mieć moje dane odpowiedzi na
błąd, które otrzymam, czekając na odpowiedź JSON tutaj. Robię to samo, co w przypadku sukcesu, ale wyodrębniam je w
innym polu, a teraz chcę konsolować rejestrować dane odpowiedzi
na błąd, abyśmy mogli poczuć, jak to wygląda.
Spróbujmy teraz wpisać adres e-mail, który już nie istnieje, a teraz otrzymujemy nasz dziwny błąd, który właśnie widzieliście, ale teraz mamy to interesujące
wyjście i widzicie, że to jest błąd obiektu Firebase do mnie wrócił i oczywiście zależy
to od interfejsu
API, z którym rozmawiasz, jakiego rodzaju błąd się pojawia
i kiedy go otrzymujesz oraz jakie szczegóły zawiera. To, jak widzisz, jest obiektem, który
ma klucz błędu, który jest kolejnym obiektem, który ma kod błędu, kilka szczegółów na temat błędów,
a następnie tę wiadomość, na przykład e-mail nie znaleziony i to jest
część, która mnie interesuje. Nawiasem mówiąc, w oficjalnych dokumentach znajdziesz więcej potencjalnych identyfikatorów
błędów, które możesz uzyskać. Tak
więc w końcu chcę to teraz sprawdzić. Chcę uzyskać mój identyfikator błędu powiedzmy na podstawie danych odpowiedzi na błąd, uzyskując
dostęp do pola błędu, które jest tym polem, które daje mi dostęp do tego obiektu, który następnie ma
to pole komunikatu.
Dlatego więc tutaj uzyskuję dostęp do wiadomości, aby ją otrzymać, a teraz możemy to sprawdzić, możemy sprawdzić,
czy identyfikator błędu jest równy adresowi e-mail nie znaleziono. W takim przypadku chcę ustawić własną niestandardową wiadomość,
więc tutaj dodam zmienną wiadomość, która domyślnie po prostu poszła nie tak, ale tutaj, jeśli
wiemy, że problem polega na tym, że nie znaleźliśmy wiadomości e-mail adres, możemy powiedzieć,
że nie można znaleźć tego adresu e-mail, a dodam więcej, jeśli czek będzie za sekundę.
Więc to jest coś, co chcę sprawdzić tutaj i na koniec, dlatego mam komunikat, który teraz chcę
wysłać,
więc teraz wyrzucę nowy błąd z moją własną dostosowaną wiadomością. Więc kolejną sprawą, którą
chcę dodać tutaj za pomocą instrukcji else / if, jest to, czy identyfikator
błędu służy do logowania przy nieprawidłowym haśle powiedzmy. Mogę to sprawdzić i ustawić komunikat równy temu hasłu, który jest niepoprawny, a teraz
spróbujmy jeszcze raz.
Wróćmy i wprowadźmy adres e-mail, który nie istnieje, szybkie logowanie i otrzymujemy ten adres e-mail nie został znaleziony
lub ten adres e-mail nie został znaleziony.
Wypróbujmy teraz poprawny adres e-mail, ale tak naprawdę hasło jest nieprawidłowe, takie jak to i otrzymujemy to hasło
jest nieprawidłowe,
więc teraz dajemy użytkownikowi lepszą opinię.
Teraz zaimplementujmy to samo do rejestracji, więc skopiuję to i przejdę do mojej skrzynki rejestracyjnej tu i tam, po
prostu mam różne kody błędów, tam
mam kody takie jak e-mail, jeśli ten
adres e-mail już istnieje.
Więc wyodrębniam mój identyfikator błędu w ten sam sposób, ale potem sprawdzam, czy istnieje wiadomość e-mail, a jeśli to jest błąd, mówię, że
ten e-mail już istnieje.
Teraz to właściwie jedyna
rzecz, którą chcę tutaj sprawdzić, są też inne błędy, które możesz uzyskać, i możesz na przykład po prostu wyłączyć
tutaj sprawdzanie poprawności i zobaczyć, jaki błąd się pojawia, jeśli wysyłasz nieprawidłowy e- adres e-mail, logując
ten identyfikator błędu, a następnie możesz to
sprawdzić, tutaj po prostu zaimplementuję tę wiadomość, a zatem teraz, jeśli spróbuję zarejestrować się tutaj przy użyciu adresu
e-mail, którego już użyłem, w ten sposób otrzymam ten e-mail już istnieje. Z drugiej strony, jeśli użyję prawidłowego adresu e-mail,
to oczywiście przechodzi on przez Firebase, a następnie, jeśli przejdziesz do uwierzytelnienia i
odświeżysz to, zobaczysz drugiego użytkownika.
W ten sposób możesz dodać ładujący mechanizm obrotowy i obsługę błędów z uwierzytelnianiem.
To wszystko fajnie, ale teraz byłoby miło w końcu opuścić ten ekran i przejść do naszej aplikacji, a następnie
zacząć pracować z tym tokenem, który otrzymujemy.