You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: src/content/6/fi/osa6a.md
+13-14Lines changed: 13 additions & 14 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -764,7 +764,7 @@ Toteutetaan nyt uusi versio ensimmäisen osan anekdoottien äänestyssovellukses
764
764
Jos kloonaat projektin olemassaolevan Git-repositorion sisälle, <i>poista kloonatun sovelluksen Git-konfiguraatio:</i>
765
765
766
766
```bash
767
-
cd redux-anecdotes // mene kloonatun repositorion hakemistoon
767
+
cd zustand-anecdotes // mene kloonatun repositorion hakemistoon
768
768
rm -rf .git
769
769
```
770
770
@@ -777,29 +777,21 @@ npm run dev
777
777
778
778
Kun teet seuraavat tehtävät, tulisi sovelluksen näyttää seuraavalta:
779
779
780
-

780
+

781
781
782
782
#### 6.2: anekdootit, step1
783
783
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.
785
785
786
786
#### 6.3: anekdootit, step2
787
787
788
788
Tee sovellukseen mahdollisuus uusien anekdoottien lisäämiselle.
789
789
790
790
Voit pitää lisäyslomakkeen aiemman esimerkin tapaan [ei-kontrolloituna](/osa6/flux_arkkitehtuuri_ja_zustand#ei-kontrolloitu-lomake).
791
791
792
-
#### 6.4: anekdootit, step3
792
+
#### 6.5: anekdootit, step3
793
793
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>.
803
795
804
796
Tämän tehtävän jälkeen komponentin <i>App</i> pitäisi näyttää seuraavalta:
805
797
@@ -811,12 +803,19 @@ const App = () => {
811
803
return (
812
804
<div>
813
805
<h2>Anecdotes</h2>
814
-
<AnecdoteForm />
815
806
<AnecdoteList />
807
+
<AnecdoteForm />
816
808
</div>
817
809
)
818
810
}
819
811
820
812
export default App
821
813
```
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!
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.
687
683
688
684
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.
689
685
690
-
#### 6.13 anekdootit, step11
686
+
#### 6.11 anekdootit, step11
691
687
692
688
Laajenna sovellusta siten, että se näyttää <i>Notification</i>-komponentin avulla viiden sekunnin ajan, kun sovelluksessa äänestetään tai luodaan uusia anekdootteja:
693
689
694
690

695
691
696
692
697
-
#### 6.19 anekdootit ja backend, step6
693
+
#### 6.12 anekdootit step12
698
694
699
695
Notifikaatioiden tekeminen on nyt hieman ikävää, sillä se edellyttää kahden actionin tekemistä ja _setTimeout_-funktion käyttöä:
700
696
@@ -715,4 +711,11 @@ Ensimmäisenä parametrina on renderöitävä teksti ja toisena notifikaation n
715
711
716
712
Ota paranneltu notifikaatiotapa käyttöön sovelluksessasi.
0 commit comments