Skip to content

Commit a5a3bc1

Browse files
committed
moar zustand
1 parent d49103d commit a5a3bc1

File tree

3 files changed

+30
-28
lines changed

3 files changed

+30
-28
lines changed

src/content/6/fi/osa6a.md

Lines changed: 13 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -764,7 +764,7 @@ Toteutetaan nyt uusi versio ensimmäisen osan anekdoottien äänestyssovellukses
764764
Jos kloonaat projektin olemassaolevan Git-repositorion sisälle, <i>poista kloonatun sovelluksen Git-konfiguraatio:</i>
765765

766766
```bash
767-
cd redux-anecdotes // mene kloonatun repositorion hakemistoon
767+
cd zustand-anecdotes // mene kloonatun repositorion hakemistoon
768768
rm -rf .git
769769
```
770770

@@ -777,29 +777,21 @@ npm run dev
777777

778778
Kun teet seuraavat tehtävät, tulisi sovelluksen näyttää seuraavalta:
779779

780-
![Sovellus renderöi anekdootit. Jokaisen anekdootin yhteydessä myös tieto sen saamien äänien määrästä sekä nappi "vote" anekdootin äänestämiselle](../../images/6/3.png)
780+
![Sovellus renderöi anekdootit. Jokaisen anekdootin yhteydessä myös tieto sen saamien äänien määrästä sekä nappi "vote" anekdootin äänestämiselle](../../images/6/u2.png)
781781

782782
#### 6.2: anekdootit, step1
783783

784-
Toteuta mahdollisuus anekdoottien äänestämiseen. Äänien määrä tulee tallettaa Redux-storeen.
784+
Toteuta mahdollisuus anekdoottien äänestämiseen. Äänien määrä tulee tallettaa Zustand-storeen.
785785

786786
#### 6.3: anekdootit, step2
787787

788788
Tee sovellukseen mahdollisuus uusien anekdoottien lisäämiselle.
789789

790790
Voit pitää lisäyslomakkeen aiemman esimerkin tapaan [ei-kontrolloituna](/osa6/flux_arkkitehtuuri_ja_zustand#ei-kontrolloitu-lomake).
791791

792-
#### 6.4: anekdootit, step3
792+
#### 6.5: anekdootit, step3
793793

794-
Huolehdi siitä, että anekdootit pysyvät äänten mukaisessa suuruusjärjestyksessä.
795-
796-
#### 6.5: anekdootit, step4
797-
798-
Eriytä uuden anekdootin luominen omaksi komponentikseen nimeltään <i>AnecdoteForm</i>. Siirrä kaikki anekdootin luomiseen liittyvä logiikka uuteen komponenttiin.
799-
800-
#### 6.6: anekdootit, step5
801-
802-
Eriytä anekdoottilistan näyttäminen omaksi komponentikseen nimeltään <i>AnecdoteList</i>. Siirrä kaikki anekdoottien äänestämiseen liittyvä logiikka uuteen komponenttiin.
794+
Eriytä uuden anekdootin luominen omaksi komponentikseen nimeltään <i>AnecdoteForm</i> ja Eriytä anekdoottilistan näyttäminen omaksi komponentikseen nimeltään <i>AnecdoteList</i>.
803795

804796
Tämän tehtävän jälkeen komponentin <i>App</i> pitäisi näyttää seuraavalta:
805797

@@ -811,12 +803,19 @@ const App = () => {
811803
return (
812804
<div>
813805
<h2>Anecdotes</h2>
814-
<AnecdoteForm />
815806
<AnecdoteList />
807+
<AnecdoteForm />
816808
</div>
817809
)
818810
}
819811
820812
export default App
821813
```
814+
815+
#### 6.3: anekdootit, step4
816+
817+
Huolehdi siitä, että anekdootit pysyvät äänten mukaisessa suuruusjärjestyksessä.
818+
819+
**HUOM** tässä tehtävässä kannattanee hyödyntää funktiota [Array.toSorted](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/toSorted), joka ei järjestä alkuperäistä taulukkoa vaan luo siitä järjestetyn kopion. Tämä sen takia, että Zustand-tilaa ei saa muuttaa!
820+
822821
</div>

src/content/6/fi/osa6b.md

Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -192,11 +192,11 @@ Sovelluksen tämänhetkinen koodi on kokonaisuudessaan [GitHubissa](https://gith
192192
193193
<div class="tasks">
194194
195-
### Tehtävä 6.7
195+
### Tehtävä 6.6
196196
197197
Jatketaan tehtävässä 6.3 aloitetun Reduxia käyttävän anekdoottisovelluksen parissa.
198198
199-
#### 6.7 anekdootit, step6
199+
#### 6.6 anekdootit, step5
200200
201201
Toteuta sovellukseen näytettävien anekdoottien filtteröiminen:
202202
@@ -225,8 +225,6 @@ const Filter = () => {
225225
export default Filter
226226
```
227227
228-
229-
230228
</div>
231229
232230
<div class="content">
@@ -640,27 +638,25 @@ Sovelluksen lopullinen koodi on [GitHubissa](https://github.com/fullstack-hy2020
640638
641639
</div>
642640
643-
644641
<div class="tasks">
645642
646-
### Tehtävät 6.14.-6.15.
643+
### Tehtävät 6.7.-6.n.
647644
648-
#### 6.14 anekdootit ja backend, step1
645+
#### 6.7 anekdootit, step6
649646
650647
Hae sovelluksen käynnistyessä anekdootit JSON Serverillä toteutetusta backendistä. Käytä HTTP-pyynnön tekemiseen Fetch APIa.
651648
652649
Backendin alustavan sisällön saat esim. [täältä](https://github.com/fullstack-hy2020/misc/blob/master/anecdotes.json).
653650
654-
#### 6.15 anekdootit ja backend, step2
651+
#### 6.8 anekdootit, step7
655652
656653
Muuta uusien anekdoottien luomista siten, että anekdootit talletetaan backendiin. Hyödynnä toteutuksessasi jälleen Fetch APIa.
657654
658-
659-
#### 6.18 anekdootit ja backend, step5
655+
#### 6.9 anekdootit, step8
660656
661657
Äänestäminen ei vielä talleta muutoksia backendiin. Korjaa tilanne Redux Thunk ‑kirjastoa ja Fetch APIa hyödyntäen.
662658
663-
#### 6.12 anekdootit, step10
659+
#### 6.10 anekdootit, step9
664660
665661
Sovelluksessa on valmiina komponentin <i>Notification</i> runko:
666662
@@ -683,18 +679,18 @@ const Notification = () => {
683679
export default Notification
684680
```
685681
686-
Laajenna komponenttia siten, että se renderöi Redux-storeen talletetun viestin. Tee toiminnallisuutta varten oma reduceri ja hyödynnä jälleen Redux Toolkitin <em>createSlice</em>-funktiota.
682+
Laajenna komponenttia siten, että se renderöi Zustand-storeen talletetun viestin. Tee toiminnallisuutta varten oma reduceri.
687683
688684
Tässä vaiheessa sovelluksen ei vielä tarvitse osata käyttää <i>Notification</i>-komponenttia järkevällä tavalla, vaan riittää että sovellus toimii ja näyttää <i>notificationReducerin</i> alkuarvoksi asettaman viestin.
689685
690-
#### 6.13 anekdootit, step11
686+
#### 6.11 anekdootit, step11
691687
692688
Laajenna sovellusta siten, että se näyttää <i>Notification</i>-komponentin avulla viiden sekunnin ajan, kun sovelluksessa äänestetään tai luodaan uusia anekdootteja:
693689
694690
![Äänestyksen yhteydessä näytetään notifikaatio: you voted 'if it hurts, do it more often'](../../images/6/8eb.png)
695691
696692
697-
#### 6.19 anekdootit ja backend, step6
693+
#### 6.12 anekdootit step12
698694
699695
Notifikaatioiden tekeminen on nyt hieman ikävää, sillä se edellyttää kahden actionin tekemistä ja _setTimeout_-funktion käyttöä:
700696
@@ -715,4 +711,11 @@ Ensimmäisenä parametrina on renderöitävä teksti ja toisena notifikaation n
715711
716712
Ota paranneltu notifikaatiotapa käyttöön sovelluksessasi.
717713
714+
</div>
715+
716+
<div class="content">
717+
718+
Zustand-storejen testaaminen...
719+
720+
718721
</div>

src/content/images/6/u2.png

166 KB
Loading

0 commit comments

Comments
 (0)