My fullstack project, using MERN techstack. My Personal Journal is about keeping and creating new journals and entries.
npm install
npm start - client and server starts concurrently..
ještě přiložím.....
Popisy jednotlivých kódu, co dělá co?
**K čemu slouží DataLoader?** Komponenta `DataLoader` je komponenta vyššího řádu (HOC), která pomáhá načítat data z adresy URL a spravovat stav načítání a ošetřování chyb.Zde je rozpis toho, co dělá:
- Správa stavu načítání: Používá Hook
useState
ke správě tří stavů:Načítání
: logická hodnota udávající, zda jsou data načítána (zpočátku nastavena natrue
).error
: chybové hlášení (zpočátku nastaveno nanull
).data
: načtená data (zpočátku nastaveno nanull
).
- Načítání dat: Používá Hook
useEffect
k načtení dat ze zadanéurl
pomocíaxios.get
. Po načtení dat nastavíloading
nafalse
adata
na načtená data. Pokud dojde k chybě, nastavíerror
na chybové hlášení aloading
nafalse
. - Podmíněné vykreslování: Na základě stavu načítání a chyby podmíněně vykreslí jednu ze tří možných komponent:
- Pokud je
loading
true
, vykreslí zprávu "Loading...". - Pokud
error
nenínull
, vykreslí chybovou zprávu s podrobnostmi o chybě. - Pokud
data
nenínull
, vykreslí komponentuchildren
a předá načtenádata
jako rekvizitu.
- Pokud je
Komponenta DataLoader
je určena k použití jako obal kolem jiných komponent, které potřebují načíst data z adresy URL. Pomocí této komponenty můžete snadno spravovat stav načítání a zpracování chyb pro potřeby načítání dat.
Kód definuje komponentu, která přijímá dva parametry: theme
a text
. Parametr theme
určuje styl zprávy (např. “success”, “error”, “warning”), zatímco text
obsahuje samotný text zprávy. Komponenta pak vrací div
element s třídou založenou na hodnotě theme
a zobrazuje text zprávy uvnitř tohoto div
elementu.)
-
Zobrazení názvu záznamu:
- Komponenta zobrazuje název záznamu ve výrazném nadpisu. Tato část je vizuálně zvýrazněna, aby byla snadno čitelná.
-
Funkce přejmenování a mazání:
- Komponenta obsahuje dva tlačítka pro provedení akcí na záznamu:
RenameButton
: Umožňuje uživatelům přejmenovat záznam. Po kliknutí se volá funkceonRename
, která byla předána jako prop.DeleteButton
: Umožňuje uživatelům smazat záznam. Po kliknutí se volá funkceonDelete
, která byla předána jako prop.
- Komponenta obsahuje dva tlačítka pro provedení akcí na záznamu:
Komponenta JournalEntryItem
je základní stavební kámen pro zobrazení a správu jednotlivých záznamů deníku. Poskytuje čisté a funkční uživatelské rozhraní, které zahrnuje zobrazení názvu záznamu a ovládací prvky pro jeho úpravy. Je navržena tak, aby byla snadno použitelná a vizuálně přitažlivá, s důrazem na uživatelskou interakci.
-
Zobrazení seznamu záznamů:
- Komponenta zobrazuje seznam záznamů ve formě mřížky, což umožňuje snadnou orientaci a přístupnost.
- Pro každý záznam je vytvořena komponenta
JournalEntryItem
, která se stará o zobrazení jednotlivých detailů záznamu.
-
Přidání nového záznamu:
- Uživatelé mohou kliknout na tlačítko "+" pro přidání nového záznamu do deníku.
- Zobrazí se dialogové okno, ve kterém uživatel zadá text nového záznamu.
- Po potvrzení se nový záznam uloží na server a seznam záznamů se aktualizuje.
-
Mazání existujícího záznamu:
- Každý záznam lze smazat pomocí odpovídajícího tlačítka.
- Před smazáním se zobrazí potvrzovací dialog, který chrání před neúmyslným smazáním.
-
Přejmenování záznamu:
- Uživatelé mohou přejmenovat záznamy kliknutím na odpovídající možnost.
- Po zadání nového názvu se seznam záznamů aktualizuje, aby zobrazoval provedené změny.
-
Chybové hlášení a stav načítání:
- Komponenta zpracovává chybové stavy a zobrazuje odpovídající hlášení, pokud dojde k chybě při komunikaci se serverem.
- Indikátor načítání ukazuje, že se data načítají, čímž zlepšuje uživatelskou zkušenost.
Komponenta JournalEntryList
poskytuje uživatelsky přívětivé rozhraní pro správu záznamů v deníku, zahrnující funkce pro přidávání, mazání a přejmenování záznamů. Komponenta je navržena tak, aby byla interaktivní a snadno použitelná, s důrazem na správu stavu a zpracování chyb, což jsou klíčové aspekty pro robustní a spolehlivé aplikace.
-
Zobrazení deníku:
- Komponenta přijímá data o deníku jako
props
a zobrazuje je pomocí komponentyTile
. - Každý deník obsahuje informace jako
id
aname
, které jsou zobrazovány v uživatelském rozhraní.
- Komponenta přijímá data o deníku jako
-
Interakce uživatele:
- Komponenta umožňuje uživatelům přejmenovat nebo smazat deník pomocí funkcí
onRename
aonDelete
, které jsou také předávány jakoprops
. - Tyto funkce jsou vyvolány uživatelskými akcemi, jako je kliknutí na příslušná tlačítka v komponentě
Tile
.
- Komponenta umožňuje uživatelům přejmenovat nebo smazat deník pomocí funkcí
-
Typová kontrola
props
:- Komponenta využívá knihovnu
prop-types
k definování typůprops
, které přijímá, což pomáhá zajistit, že komponenta dostává správná data a funkce.
- Komponenta využívá knihovnu
Komponenta JournalItem
je malou, ale důležitou částí aplikace, která zajišťuje zobrazení jednotlivých deníků a poskytuje uživatelům prostředky pro jejich správu. Díky použití prop-types
zajišťuje, že všechny předávané údaje jsou ve správném formátu, což pomáhá předcházet chybám během vývoje i v běžném provozu.
-
Načítání a zobrazení seznamu deníků:
- Komponenta používá API k načtení aktuálního seznamu deníků ze serveru při prvním načtení komponenty a kdykoli se seznam deníků změní.
- Zobrazuje deníky ve formě mřížky, což umožňuje snadný přístup a přehlednost.
-
Přidání nového deníku:
- Uživatelé mohou kliknout na tlačítko "+" pro přidání nového deníku. Zobrazí se dialogové okno pro zadání názvu nového deníku.
- Po potvrzení se nový deník uloží na server a seznam deníků se aktualizuje.
-
Mazání existujícího deníku:
- Uživatelé mohou smazat deník pomocí kliknutí na odpovídající tlačítko v každé položce deníku.
- Před smazáním se zobrazí potvrzovací dialog, aby se zabránilo neúmyslnému smazání.
-
Přejmenování deníku:
- Každý deník lze přejmenovat. Při kliknutí na odpovídající možnost se zobrazí dialog pro zadání nového názvu.
- Po úspěšném přejmenování se seznam deníků aktualizuje, aby odrážel změny.
-
Chybové hlášení a stav načítání:
- Komponenta zobrazuje chybová hlášení v případě, že dojde k chybě při komunikaci se serverem.
- Indikátor načítání ukazuje, že se data načítají, což zlepšuje uživatelskou zkušenost tím, že uživatelé vědí, že se něco děje na pozadí.
Komponenta JournalList
poskytuje základní funkce pro správu deníků, jako je zobrazení, vytváření, mazání a přejmenování. Používá interaktivní uživatelské rozhraní s dialogovými okny pro uživatelské vstupy, čímž zajišťuje intuitivní a efektivní používání. Kromě toho obsahuje i mechanismy pro zpracování chyb a zobrazování stavu načítání, což jsou klíčové aspekty pro robustní uživatelské rozhraní.