Skip to content

Commit 4b6aa9f

Browse files
author
Barta, Jan
committed
Add state excercise hints to the code
1 parent 3b9d5fb commit 4b6aa9f

File tree

3 files changed

+30
-18
lines changed

3 files changed

+30
-18
lines changed

README.md

Lines changed: 20 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,19 @@
11
# Vytváření webových aplikací v Reactu
22

3+
## Před začátkem
4+
5+
Prosím spusťte:
6+
7+
```bash
8+
git clone https://github.com/msd-code-academy/intro-to-react.git
9+
cd intro-to-react
10+
npm ci # tenhle příkaz může chvíli trvat
11+
```
12+
13+
---
14+
15+
## Intro
16+
317
- Začátek: 18:05
418
- Přestávka (10 minut): 19:30 - 19:40
519
- Struktura
@@ -17,18 +31,6 @@
1731

1832
---
1933

20-
## Před začátkem
21-
22-
Prosím spusťte:
23-
24-
```bash
25-
git clone https://github.com/msd-code-academy/intro-to-react.git
26-
cd intro-to-react
27-
npm ci # tenhle příkaz může chvíli trvat
28-
```
29-
30-
---
31-
3234
## HTML + CSS + JavaScript ~= Webová aplikace @Honza
3335

3436
- Webové stránky a aplikace se skládají z několika částí
@@ -147,6 +149,7 @@ const Search => () {
147149
> - className (JSX) == class(HTML)
148150
149151
> [Ukázka 1](./src/exercises/01-hello-world/App.jsx)
152+
> - vysvětlit strukturu projektu a imports
150153
151154
> [Cvičení 1](./src/exercises/01-hello-world/App.jsx)
152155
@@ -387,7 +390,7 @@ class Search extends React.Component {
387390
}
388391
```
389392

390-
*class field*
393+
*class field (preferovaná varianta)*
391394

392395
```jsx
393396
class Search extends React.Component {
@@ -409,12 +412,12 @@ class Search extends React.Component {
409412
- Stav se nikdy nesmí měnit přímým přiřazením nového stavu, pouze přes funkci `setState`
410413

411414
```js
415+
// Správně:
416+
this.setState({loading: true});
417+
412418
// !!! Chybné !!!:
413419
this.state.loading = true;
414420
this.state = {loading: true};
415-
416-
// Správně:
417-
this.setState({loading: true});
418421
```
419422

420423
> #### Virtual DOM
@@ -444,7 +447,7 @@ const [searchText, setSearchText] = useState('abc');
444447
setSearchText('cde')
445448
```
446449

447-
- chytré a hloupé (také kontrolované) komponenty
450+
- "chytré" a "hloupé" komponenty
448451
- pattern, který předchází nepřehlednému zacházení se stavem na více místech
449452
- některé komponenty záměrně nemají žádný stav, ale raději jej přijímají od rodičovských komponent přes propsy - tzv. kontrolované komponenty
450453
- jiné komponenty pak udržují stav i pro ostatní komponenty - tzv. chytré komponenty

src/exercises/01-hello-world/App.jsx

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,6 @@ export class App extends React.Component {
3737
Results for <span id="search-text-results">abc</span>
3838
</h2>
3939

40-
{/* TODO: add few static search results shown in a <table></table> */}
4140
</div>
4241
</div>
4342
);

src/exercises/03-state/App.jsx

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,13 @@ const resultsFromAPI = [
4040
* */
4141

4242
export class App extends React.Component {
43+
44+
// 1) zde inicializujte stav. Bud pomoci konstruktoru nebo class fieldu
45+
// stav by mel mit jeden prvek, prazdne pole "results"
46+
47+
// 3) vytvorte novou funkci handleSearchClick
48+
// 4) pomoci this.setState() nastavte ve funkci "results" na "resultsFromAPI"
49+
4350
render() {
4451
return (
4552
<div className="App">
@@ -51,9 +58,12 @@ export class App extends React.Component {
5158
<div>
5259
<div className="logo"></div>
5360
<SearchInput />
61+
{/* 2) do SearchButtons pridejte novou props onSearch */}
5462
<SearchButtons />
5563
</div>
5664
</div>
65+
{/* 5) pouzijte this.state.results k vykresleni vysledku dynamicky z promenne */}
66+
{/* vyuzijte metodu map: this.state.results.map(result => <ResultItem>) */}
5767
<Results searchQuery="abc">
5868
<ResultItem
5969
link="/Result-1"

0 commit comments

Comments
 (0)