Skip to content

Commit 404c30c

Browse files
author
Jakub Kohoutek
committed
Add first draft of data fetching section
1 parent de4354c commit 404c30c

File tree

2 files changed

+26
-1
lines changed

2 files changed

+26
-1
lines changed

README.md

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -446,7 +446,30 @@ setSearchText('cde')
446446
447447
---
448448

449-
## Shared State @kuba 30 mins
449+
## Získávání dat ze serveru
450+
451+
V běžném světě nemíváme v React aplikaci rovnou k dispozici data (například výsledky vyhledávání). Zpravidla
452+
si tato data musíme stáhnout až na základě nějaké akce uživatele. K tomu se používá API, které běží někde na
453+
serveru a má přístup například do databáze.
454+
455+
> API je zkratka pro Application Programming Interface a jedná se o rozhraní, díky kterému spolu mohou různé
456+
> aplikace komunikovat mezi sebou. Ve webovém vývoji je asi nejčastější
457+
> [REST API](https://www.itnetwork.cz/programovani/nezarazene/stoparuv-pruvodce-rest-api), které umožňuje
458+
> jednoduše vytvářet, číst, editovat nebo mazat (CRUD operace - Create, Read, Update, Delete) data na serveru
459+
> pomocí HTTP volání.
460+
461+
V našem případě uživatel zadá do vstupního pole nějaký text a následně klikne na tlačítko hledat. V tu chvíli
462+
chceme poslat dotaz společně s hledaným výrazem na server, ten z databáze vyfiltruje záznamy podle předaného
463+
dotazu a pošle zpátky odpověd jen s relevantími výsledky.
464+
465+
Tyto akce jsou asynchronní - nějaký čas trvá, než se náž dotaz zpracuje a vrátí se s výsledky. V živatelském
466+
rozhraní tak potřebujeme zpravidla:
467+
468+
- odeslat dotaz na server
469+
- zobrazit indikaci načítání (loading)
470+
- zachytit výsledky dotazu
471+
- uložit výsledky do lokálního stavu a zobrazit je
472+
- případně zobrazit chybu, pokud dotaz selže
450473

451474
---
452475

src/exercises/04-api/App.jsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ import {ResultItem} from './ResultsItem';
77

88
import '../../index.css';
99

10+
// fetch('https://myslenkynezastavis.cz?searchQuery=abc').then((result) => result.json()).then(console.log);
11+
1012
/**
1113
* Cvičení:
1214
*

0 commit comments

Comments
 (0)