Skip to content

Commit

Permalink
QA fixes
Browse files Browse the repository at this point in the history
  • Loading branch information
podlomar committed Nov 5, 2023
1 parent 6724e0c commit e69fefc
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 12 deletions.
1 change: 0 additions & 1 deletion daweb/react/komunikace-dite-rodic/shrnuti.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,4 +7,3 @@ Po této lekci byste měli vědět a znát
- jak komponenty komunikují pomocí callbacků, tedy ve směru od dítěte k rodiči,
- hlavní poučku pro jednoduchou komunikaci od dítěte k rodiči:
> Dítě může rodiči poslat informaci tak, že nastaví jeho stav. Rodič tak musí dítěti předat funkci, která mu umožní stav měnit.
20 changes: 11 additions & 9 deletions daweb/react/pokrocila-komunikace/dite-rodic.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,21 +4,23 @@ V předchozí lekci jsme se naučili jednoduchou komunikaci od dítěte k rodič

> Dítě může rodiči poslat informaci tak, že nastaví jeho stav. Rodič tak musí dítěti předat funkci, která mu umožní stav měnit.
My jsme proto dítěti vždycky posílali přímo funkci `setState`, tedy například `setPresident` v naší ukázce s volbami. Snadno ovšem narazíme na situace, kdy si s tímto postupem nevystačíme. Většinou to je ve chvíli, kdy chceme rodiči od dítěte předat nějakou informaci a rodič se má sám rozhodnout, jak s touto informací naloží. Zda například změní stav, jakým zůsobem jej změní nebo třeba udělá něco úplně jiného, například odešle data na server, zavolá nějaký API endpoint apod.
My jsme proto dítěti vždycky posílali přímo funkci `setState`, tedy například `setPresident` v naší ukázce s volbami. Snadno ovšem narazíme na situace, kdy si s tímto postupem nevystačíme. Většinou to je ve chvíli, kdy chceme rodiči od dítěte předat nějakou informaci a rodič se má sám rozhodnout, jak s touto informací naloží. Zda například změní stav, jakým zůsobem jej změní nebo třeba udělá něco úplně jiného, například odešle data na server, zavolá nějaký API endpoint apod.

Pro názornou ukázku s vraťme k našemu příkladu s volbami. V minulé lekci jsme si ukázali, jak může komponenta `Candidate` poslat informaci o tom, kdo byl zvolen, svému rodiči `HomePage`. Tato komunikace proběha srkze funkci předanou skrze prop `onVote`.

```jsx
export const Candidate = ({ name, avatar, onVote }) => {
const handleClick = () => {
onVote(name);
}
};

return (
<div className="candidate">
<h3 className="candidate__name">{name}</h3>
<img className="candidate__avatar" src={avatar} />
<button onClick={handleClick} className="btn-vote">Vybrat</button>
<button onClick={handleClick} className="btn-vote">
Vybrat
</button>
</div>
);
};
Expand All @@ -31,15 +33,15 @@ Této komponentě pak její rodič `HomePage` předával rovnou funkci `setPresi
{candidates.map((c) => (
<Candidate
key={c.name}
name={c.name}
name={c.name}
avatar={c.avatar}
onVote={setPresident}
onVote={setPresident}
/>
))}
</div>
```

Co kdybychom však chtěli, aby se po kliknutí na kandidáta zobrazilo nejdříve nějaké upozornění a až po jeho potvrzení se změnil stav `president`? Nebo bychom zároveň se změnou stavu chtěli odeslat na server informaci o tom, kdo byl zvolen?
Co kdybychom však chtěli, aby se po kliknutí na kandidáta zobrazilo nejdříve nějaké upozornění a až po jeho potvrzení se změnil stav `president`? Nebo bychom zároveň se změnou stavu chtěli odeslat na server informaci o tom, kdo byl zvolen?

V takovém případě musíme udělat krok navíc a v komponentě `HomePage` vytvořit novou funkci `handleVote`, která bude obsahovat veškerou logiku, která se má provést po kliknutí na kandidáta. Tato funkce pak bude předána komponentě `Candidate` skrze prop `onVote`.

Expand All @@ -57,9 +59,9 @@ const handleVote = (name) => {
{candidates.map((c) => (
<Candidate
key={c.name}
name={c.name}
name={c.name}
avatar={c.avatar}
onVote={handleVote}
onVote={handleVote}
/>
))}
</div>
Expand Down
4 changes: 2 additions & 2 deletions daweb/react/pokrocila-komunikace/potomci.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,9 @@ const CandidateList = ({ candidates, onVote }) => {
{candidates.map((c) => (
<Candidate
key={c.name}
name={c.name}
name={c.name}
avatar={c.avatar}
onVote={onVote}
onVote={onVote}
/>
))}
</div>
Expand Down

0 comments on commit e69fefc

Please sign in to comment.