Ponieważ w poprzednim poście przy pomocy biblioteki Apollo Server postawiliśmy serwer GraphQL, dziś używając Apollo Client stworzymy część kliencką aplikacji. Za jej pomocą pobierzemy dane z serwera.
Użycie klienta Apollo Client do załadowania danych z serwera
Wystartowanie serwera
W poprzednim poście utworzyliśmy następujące API wystawione na zewnątrz:
Serwer uruchomi się pod adresem http://localhost:4000, ten adres przekażemy do instancji aplikacji klienckiej.
Utworzenie klienta i pobranie danych z serwera
Udostępnienie klienta w aplikacji
Zainstalujmy bibliotekę Apollo Client i GraphQL poleceniem
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
npm install @apollo/client graphql
npm install @apollo/client graphql
npm install @apollo/client graphql
Po instalacji nalezy utworzyć instancję klasy ApolloClient:
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
const client = newApolloClient({
uri: 'http://localhost:4000',
cache: newInMemoryCache()
});
const client = new ApolloClient({
uri: 'http://localhost:4000',
cache: new InMemoryCache()
});
const client = new ApolloClient({
uri: 'http://localhost:4000',
cache: new InMemoryCache()
});
Aby móc korzystać z usług klienta w całej aplikacji za pomocą hooka useQuery, powinniśmy użyć providera ApolloProvider i przekazać mu stworzoną instancję klienta:
Jak możemy zauważyć w Dev Tools, na endpoint / zostanie wysłane przekazane w hooku query, które zostanie przez serwer zresolvowane:
W obiekcie data znajduje się pole animals, zawierające listę obiektów z parametrem name. Komponent wyświetla listę elementów, które wewnątrz odpytają o szczegóły konkretnego zwierzęcia:
Komponent Animal jest komponentem przechodnim, mającym zapamiętać czy dany obiekt został kliknięty. Nie jest dla nas bardzo istotny (pełny kod będzie dostępny na Githubie), przejdźmy więc od razu do komponentu AnimalData który załaduje dane.
Komponent AnimalData wykorzysta hook useQuery aby załadować dane konkretnego zwierzęcia. W zapytaniu użyjemy variables by móc dynamicznie przekazać dane do zapytania:
Nazwa pola w obiekcie variables musi odpowiadać nazwie zmiennej użytej w kodzie query. Na serwer pod endpoint / wysyłane jest pełne zapytanie wraz ze zmiennymi, którymi ma być ono uzupełnione:
W odpowiedzi w obiekcie data otrzymamy obiekt animal zawierający pola name i birthPlace, które zostaną wyświetlone:
Komponent Owners i zapisywanie danych przez useMutation
Ponieważ w komponencie Owners chcemy jednoczesnie pobierać dane i wysyłać je na serwer, hook useQuery poza danymi zwróci również funkcję która ponownie wywoła zapytanie:
Platforma Apollo Data Graph pozwala sprawnie zarządzać zarówno częścią serwerową jak i kliencką. Już przykłady zawarte w poście pokazują, że warto zainteresować się technologią GraphQL. W kolejnych postach będą prezentowane bardziej zaawansowane przypadki użycia.
Jeden komentarz do “GraphQL w React #2 – połącz się z serwerem dzięki Apollo Client”
Jeden komentarz do “GraphQL w React #2 – połącz się z serwerem dzięki Apollo Client”
Możliwość komentowania została wyłączona.