GraphQL.cz/Články/GraphQL na frontendu

Integrace Apollo Client s TypeScript v React projektech

Objevte, jak efektivně začlenit Apollo Client s TypeScript do vašich React projektů a získat tím vyšší úroveň typové bezpečnosti při práci s GraphQL API.

787 slov
7.9 minut čtení
8. 12. 2021
Karolína Černá

Jak na to? Spojení Apollo Client a TypeScript v Reactu

Možná jste už slyšeli o Apollo Client a jeho schopnostech při práci s GraphQL API. Je to mocný nástroj, který ulehčuje vývoj aplikací, jež komunikují s datovými zdroji zcela jinak, než jsme byli zvyklí. A co když vám řeknu, že pokud tento nástroj zkombinujete s TypeScript, dostanete z toho synergii, která vám nejen usnadní práci, ale také zvýší typovou bezpečnost vaší aplikace? Ano, to je přesně to, o čem si dnes povíme!

Co je Apollo Client a proč ho používat?

Apollo Client je revoluční knihovna pro práci s GraphQL. Umožňuje snadnou interakci s GraphQL API tím, že automatizuje proces stahování a správy dat. Mnoho vývojářů ocení jeho schopnost cachovat dotazy, což znamená, že pokud už byla data jednou stažena, nemusí se znovu stahovat. To šetří čas a šířku pásma. A co víc? Apollo Client přináší i elegantní řešení pro správu lokálního stavu aplikace.

Ale co takový TypeScript? Věděli jste, že TypeScript může dramaticky zlepšit kvalitu vašeho kódu? Typová bezpečnost je v poslední době velmi diskutované téma. Když používáte TypeScript, můžete odhalit chyby během vývoje, místo abyste čekali na runtime. To je obrovská výhoda pro každého vývojáře!

Proč kombinovat Apollo Client a TypeScript?

Kombinování Apollo Client a TypeScript přináší hned několik výhod:

  • Typová bezpečnost: Díky TypeScriptu můžete mít jistotu, že vaše dotazy a odpovědi budou vždy správně typované. To znamená méně chyb ve vašem kódu!
  • Dokumentace: Typy slouží jako skvělá dokumentace přímo v kódu. Každý vidí, co se očekává od proměnných a funkcí.
  • Intellisense: Jestliže používáte IDE jako Visual Studio Code, dostanete okamžitě nápovědu při psaní kódu. To výrazně zrychlí vaši práci.

Jak začít? Základní nastavení projektu

Než se pustíme do podrobností integrace Apollo Client s TypeScript, pojďme si vytvořit nový React projekt. Nejběžnějším způsobem, jak toho dosáhnout, je použití Create React App:

npx create-react-app my-app --template typescript
cd my-app

Nyní máte základní strukturu projektu připravenou na použití.

Dále nainstalujeme potřebné balíčky pro Apollo Client:

npm install @apollo/client graphql

Po nainstalování těchto balíčků můžeme začít integrovat Apollo do našeho projektu.

Nastavení Apollo Provider

Prvním krokem k integraci Apollo Client do našeho projektu je nastavení Apollo Provider. Ten nám umožní využívat Apollo Client kdekoli v naší aplikaci. Otevřete soubor index.tsx a přidejte následující kód:

yarn install @apollo/client graphql
yarn add @apollo/client graphql
yarn add @apollo/client graphql
yarn add @apollo/client graphql
yarn add @apollo/client graphql
yarn add @apollo/client graphql
yarn add @apollo/client graphql
yarn add @apollo/client graphql
yarn add @apollo/client graphql
yarn add @apollo/client graphql
yarn add @apollo/client graphql
yarn add @apollo/client graphql
yarn add @apollo/client graphql
yarn add @apollo/client graphql
dpm install apollo-client apollo-cache-inmemory apollo-link-http react-apollo 
gql-query-mutations\src\index.tsx;
 import React from 'react';  
 import ReactDOM from 'react-dom';  
 import App from './App';  
 import \{ ApolloClient, InMemoryCache, ApolloProvider \} from '@apollo/client';   

const client = new ApolloClient(\{  
  uri: 'https://your-graphql-endpoint.com/graphql',  
  cache: new InMemoryCache()  
\});   
ReactDOM.render(  
  \<ApolloProvider client=\{client\}\>  
    \<App /\>  
  \</ApolloProvider\>,  
  document.getElementById('root')  
);

A máme hotovo! Nyní máte svojí aplikaci připravenou ke komunikaci s GraphQL API.

Práce s GraphQL dotazy pomocí TypeScriptu

Teď se dostáváme k tomu nejzajímavějšímu! Jak vlastně provádět dotazy s využitím TypeScriptu? Představme si jednoduchý dotaz na získání seznamu uživatelů:

query GetUsers \{  
  users \{  
    id  
    name  
    email  
  \}  
\}

Abychom tento dotaz provedli v našem React komponentu, použijeme hook useQuery. Nejprve však definujeme typy pro naši odpověď:

type User = \{   
id: string;   
names: string;   email: string;\};   
type GetUsersResponse = \{   users: User[];\};   
type GetUsersVariables = \{\};   ```
nyní můžeme použít hook `useQuery` k provedení dotazu:
```javascript
 import \{ useQuery \} from '@apollo/client'; import gql from 'graphql-tag';
const GET_USERS = gql` query GetUsers \{ users \{ id name email \} \} `;
 export const UserList = () =\> \{   const \{ loading, error, data \} = useQuery\<GetUsersResponse\>(GET_USERS);
if (loading) return \<p\>Loading...\</p\>;
il (error) return \<p\>Error :(\</p\>;
genesis return ( \<ul\>\{data.users.map((user) =\> (\<li key=\{user.id\}\>\{user.name\} - \{user.email\}\</li\>))\}\</ul\> ); \};```
v tomto kódu jsme definovali typy pro odpověď na dotaz pomocí TypeScriptu. To nám dává jistotu ohledně struktury dat, které očekáváme zpět z API. Tímto způsobem můžeme snadno identifikovat chyby ještě před tím, než se dostanou do produkce.

Závěr a tipy na další články

Integrace Apollo Client s TypeScript v React projektech není jen módní trend - je to praktický způsob, jak zlepšit kvalitu vašich aplikací a snížit množství chyb. Jakmile pochopíte základy tohoto spojení a začnete ho používat ve svých projektech, zjistíte rozdíl během velmi krátké doby. Pokud vás toto téma zaujalo a chcete se dozvědět více o dalších aspektech práce s GraphQL nebo o pokročilých technikách správy stavu v aplikacích React pomocí Apollo Clientu a TypeScriptu, neváhejte nás sledovat! Nepromeškejte příležitost posunout své dovednosti na novou úroveň!

35225 přečtení článku
349 lajků
8. 12. 2021
Karolína Černá
  • Apollo Client

  • TypeScript

  • React projekty

  • GraphQL API

  • typová bezpečnost

  • useQuery

  • graphql-tag

O autorovi

Karolína Černá

Expertka na voice-over produkci a hlasové technologie. Vystudovala DAMU, obor alternativní a loutkové divadlo, následně se specializovala na práci s hlasem a mluveným slovem. Působila jako hlasová koučka v několika dabingových studiích a spolupracovala na mnoha audioknižních projektech. Pro Audacity.cz vytváří obsah zaměřený na práci s hlasem, techniky nahrávání mluveného slova a zpracování voice-overů. Její články o správném použití kompresorů a ekvalizérů při práci s hlasem patří k nejčtenějším na webu. Je také certifikovanou lektorkou techniky Alexander a specializuje se na hlasovou hygienu. Mimo web vede vlastní studio zaměřené na produkci audioknih a dabingu. Pravidelně přispívá do odborných časopisů o hlasové pedagogice.

Dotazy k článku