Skip to content

Commit 56c19e8

Browse files
committed
part 5 tweaks
1 parent efc2fe6 commit 56c19e8

File tree

6 files changed

+100
-2286
lines changed

6 files changed

+100
-2286
lines changed

src/content/5/en/part5e.md

Lines changed: 60 additions & 60 deletions
Large diffs are not rendered by default.

src/content/5/fi/osa5e.md

Lines changed: 34 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,9 @@ Sovelluksemme ulkoasu on tällä hetkellä melko karu:
1111

1212
![](../../images/5/u1.png)
1313

14-
Haluamme tilanteeseen muutoksen. Aloitetaan sovelluksen navigaatiorakenteesta:
14+
Haluamme tilanteeseen muutoksen. Aloitetaan sovelluksen navigaatiorakenteesta.
1515

16-
On erittäin tyypillistä, että web-sovelluksissa on navigaatiopalkki, jonka avulla on mahdollista vaihtaa sovelluksen näkymää. Muistiinpanosovelluksemme voisi sisältää pääsivun
16+
On erittäin tyypillistä, että web-sovelluksissa on navigaatiopalkki, jonka avulla on mahdollista vaihtaa sovelluksen näkymää. Muistiinpanosovelluksemme voisi sisältää pääsivun:
1717

1818
![](../../images/5/u6.png)
1919

@@ -96,7 +96,7 @@ const Home = () => {
9696
export default Home
9797
```
9898

99-
Eriytetään sovelluksen aiempi päänäkymä omaksi komponentiksi, siirretään kuitenkin muistiinpanojen tilan käsittely komponentin ulkopuolelle:
99+
Eriytetään sovelluksen aiempi komponentissa <i>App</i> ollut päänäkymä omaksi komponentiksi, Siirretään kuitenkin muistiinpanojen tilan käsittely komponentin ulkopuolelle:
100100

101101

102102
```js
@@ -109,7 +109,6 @@ const NoteList = ({ notes }) => { // highlight-line
109109

110110
Komponentti <i>App</i> muuttuu nyt seuraavasti
111111

112-
113112
```js
114113
import { useState, useEffect } from 'react'
115114
import noteService from './services/notes'
@@ -207,10 +206,10 @@ Klikatessa navigaatiopalkista "notes", vaihtuu selaimen osoiterivin osoitteeksi
207206

208207
![](../../images/5/u3.png)
209208

210-
Normaalissa Web-sivussa selaimen osoiterivillä olevan osoitteen vaihtuminen aiheuttaa sivun uudelleenlataamisen. React Routeria käyttäen näin ei kuitenkaan tapahdtu vaan reititys tehdään täysin JavaScriptin avulla frontendissa.
211-
212209
Vastaavasti, kun klikataan "new note" osoitteeksi tulee <i>create</i> renderöidään komponentti <i>NoteForm</i>.
213210

211+
Normaalissa Web-sivussa selaimen osoiterivillä olevan osoitteen vaihtuminen aiheuttaa sivun uudelleenlataamisen. React Routeria käyttäen näin ei kuitenkaan tapahdtu vaan reititys tehdään täysin JavaScriptin avulla frontendissa.
212+
214213
Käyttämämme Router-komponentti on [BrowserRouter](https://reactrouter.com/en/main/router-components/browser-router):
215214

216215
```js
@@ -321,7 +320,7 @@ const Note = ({ notes, toggleImportance }) => {
321320
export default Note
322321
```
323322

324-
Toisin kuin aiemmin, komponentti <i>Note</i> saa nyt parametrikseen <i>kaikki</i> muistiinpanot propsina <i>notes</i> ja se pääsee URL:n yksilöivään osaan eli näytettävän muistiinpanon <i>id</i>:hen käsiksi React Routerin funktion [useParams](https://reactrouter.com/api/hooks/useParams) avulla.
323+
Toisin kuin aiemmin, komponentti <i>Note</i> saa nyt parametrikseen <i>kaikki muistiinpanot</i> propsina <i>notes</i> ja se pääsee URL:n yksilöivään osaan eli näytettävän muistiinpanon <i>id</i>:hen käsiksi React Routerin funktion [useParams](https://reactrouter.com/api/hooks/useParams) avulla.
325324

326325
### useNavigate
327326

@@ -347,7 +346,8 @@ const App = () => {
347346

348347
<Routes>
349348
<Route path="/notes/:id" element={
350-
<Note notes={notes}
349+
<Note
350+
notes={notes}
351351
toggleImportanceOf={toggleImportanceOf}
352352
deleteNote={deleteNote} // highlight-line
353353
/>
@@ -463,14 +463,7 @@ const Note = ({ note, id, toggleImportanceOf, deleteNote }) => { // highlight-l
463463
const id = useParams().id
464464
const navigate = useNavigate()
465465

466-
const label = note.important ? 'make not important' : 'make important'
467-
468-
const handleDelete = () => {
469-
if (window.confirm(`Delete note "${note.content}"?`)) {
470-
deleteNote(id)
471-
navigate('/notes')
472-
}
473-
}
466+
// ...
474467

475468
return (
476469
<li className="note">
@@ -598,7 +591,7 @@ Sovelluksen tämänhetkinen koodi on kokonaisuudessaan [GitHubissa](https://gith
598591

599592
#### 5.24: routed blogs, step1
600593

601-
Lisää sovellukseen React Router siten, että navigaatiopalkissa olevia linkkejä klikkailemalla saadaan säädeltyä näytettävää näkymää.
594+
Lisää blogisovellukseen React Router siten, että navigaatiopalkissa olevia linkkejä klikkailemalla saadaan säädeltyä näytettävää näkymää.
602595

603596
Sovelluksen juuressa eli polulla _/_ näytetään kaikkien blogien lista:
604597

@@ -660,15 +653,15 @@ Blogien järjestämistä tykkäysjärjestykseen ei siis nyt testata.
660653

661654
</div>
662655

663-
<div class="content">
664-
665-
Osassa 2 on jo katsottu kahta tapaa tyylien lisäämiseen, eli vanhan koulukunnan [yksittäistä CSS](/osa2#tyylien-lisääminen)-tiedostoa ja [inline-tyylejä](/osa2/tyylien_lisaaminen_react_sovellukseen#inline-tyylit). Katsotaan tässä osassa vielä muutamaa tapaa.
656+
<div class="content"
666657

667658
### Valmiit käyttöliittymätyylikirjastot
668659

669-
Eräs lähestymistapa sovelluksen tyylien määrittelyyn on valmiin "UI-frameworkin" eli suomeksi ehkä käyttöliittymätyylikirjaston käyttö.
660+
Osassa 2 on jo katsottu kahta tapaa tyylien lisäämiseen, eli vanhan koulukunnan [yksittäistä CSS](/osa2#tyylien-lisääminen)-tiedostoa ja [inline-tyylejä](/osa2/tyylien_lisaaminen_react_sovellukseen#inline-tyylit). Katsotaan tässä osassa vielä muutamaa tapaa.
661+
662+
Eräs lähestymistapa sovelluksen tyylien määrittelyyn on valmiin "UI-frameworkin" eli käyttöliittymätyylikirjaston käyttö.
670663

671-
Ensimmäinen laajaa kuuluisuutta saanut UI-framework oli Twitterin kehittämä [Bootstrap](https://getbootstrap.com/), joka lienee edelleen UI-frameworkeista eniten käytetty. Viime aikoina UI-frameworkeja on noussut kuin sieniä sateella. Valikoima on niin iso, ettei tässä kannata edes yrittää tehdä tyhjentävää listaa.
664+
Ensimmäinen laajaa kuuluisuutta saanut UI-framework oli Twitterin kehittämä [Bootstrap](https://getbootstrap.com/). Viime vuosina UI-frameworkeja on noussut kuin sieniä sateella. Valikoima on niin iso, ettei tyhjentävää listaa kannata edes yrittää tehdä.
672665

673666
Monet UI-frameworkit sisältävät web-sovellusten käyttöön valmiiksi määriteltyjä teemoja sekä "komponentteja", kuten painikkeita, menuja ja taulukkoja. Termi komponentti on edellä kirjoitettu hipsuissa sillä kyse ei ole samasta asiasta kuin React-komponentti. Useimmiten UI-frameworkeja käytetään sisällyttämällä sovellukseen frameworkin määrittelemät CSS-tyylitiedostot sekä JavaScript-koodi.
674667

@@ -730,7 +723,9 @@ const NoteList = ({ notes }) => {
730723
{notes.map(note => (
731724
<TableRow key={note.id}>
732725
<TableCell>
733-
<Link to={`/notes/${note.id}`}>{note.content}</Link>
726+
<Link to={`/notes/${note.id}`}>
727+
{note.content}
728+
</Link>
734729
</TableCell>
735730
<TableCell>
736731
{note.user.name}
@@ -780,7 +775,9 @@ const NoteForm = ({ createNote }) => {
780775
onChange={event => setNewNote(event.target.value)}
781776
/>
782777
<div>
783-
<Button type="submit" variant="contained" style={{ marginTop: 10 }}>save</Button>
778+
<Button type="submit" variant="contained" style={{ marginTop: 10 }}>
779+
save
780+
</Button>
784781
</div>
785782
</form>
786783
</div>
@@ -876,7 +873,7 @@ Alert on ulkoasultaan tyylikäs:
876873

877874
#### Navigaatiovalikko
878875

879-
Navigaatiovalikko toteutetaan komponentin [AppBar](https://mui.com/components/app-bar/) avulla
876+
Navigaatiovalikko toteutetaan komponentin [AppBar](https://mui.com/components/app-bar/) avulla.
880877

881878
Jos sovelletaan suoraan dokumentaation esimerkkiä
882879

@@ -904,7 +901,7 @@ Määrittelemällä
904901
</Button>
905902
```
906903

907-
renderöidään komponentti _Button_ siten, että sen juurikomponenttina onkin react-router-dom-kirjaston komponentti _Link_, jolle siirtyy polun kertova prop _to_.
904+
renderöidään komponentti <i>Button</i> siten, että sen juurikomponenttina onkin react-router-dom-kirjaston komponentti <i>Link</i>, jolle siirtyy polun kertova prop <i>to</i>.
908905

909906
Navigaatiopalkin koodi kokonaisuudessaan on seuraava
910907

@@ -920,21 +917,27 @@ Navigaatiopalkin koodi kokonaisuudessaan on seuraava
920917

921918
ja lopputulos on haluamamme kaltainen:
922919

923-
![](../../images/5/u15.png)
920+
![](../../images/5/u16.png)
924921

925922
Huomaamme kuitenkin, että kun hiiri viedään navigaatiopalkin päälle, on hover-indikaattori liian huomaamaton. Korjataan tilanne määrittelemällä tilanteisiin hieman parempi taustaväri:
926923

927924

928925
```js
929-
const hoverStyle = { '&:hover': { bgcolor: 'rgba(255,255,255,0.3)' } }
926+
const style = { '&:hover': { bgcolor: 'rgba(255,255,255,0.3)' } }
930927

931928
return (
932929
<Container>
933930
<AppBar position="static">
934931
<Toolbar>
935-
<Button color="inherit" component={Link} to="/" sx={hoverStyle}>home</Button>
936-
<Button color="inherit" component={Link} to="/notes" sx={hoverStyle}>notes</Button>
937-
<Button color="inherit" component={Link} to="/create" sx={hoverStyle}>new note</Button>
932+
<Button color="inherit" component={Link} to="/" sx={style}>
933+
home
934+
</Button>
935+
<Button color="inherit" component={Link} to="/notes" sx={style}>
936+
notes
937+
</Button>
938+
<Button color="inherit" component={Link} to="/create" sx={style}>
939+
new note
940+
</Button>
938941
</Toolbar>
939942
</AppBar>
940943

0 commit comments

Comments
 (0)