Skip to content

Commit 0c5b9fb

Browse files
committed
fix sync
1 parent 200bb83 commit 0c5b9fb

8 files changed

+32
-121
lines changed

src/content/learn/describing-the-ui.md

+19-34
Original file line numberDiff line numberDiff line change
@@ -10,26 +10,15 @@ React on JavaScript kirjasto käyttöliittymien (UI) renderöintiin. Käyttölii
1010

1111
<YouWillLearn isChapter={true}>
1212

13-
<<<<<<< HEAD
14-
- [Miten kirjoitat ensimmäisen komponenttisi](/learn/your-first-component)
15-
- [Miten ja milloin luot monikomponenttisia tiedostoja](/learn/importing-and-exporting-components)
16-
- [Miten lisäät merkintäkoodia JavaScriptiin JSX hyödyntäen](/learn/writing-markup-with-jsx)
17-
- [Miten käyttää aaltosulkeita JSX:n kanssa JavaScript toiminnallisuuksien hyödyntämiseksi komponenteissa](/learn/javascript-in-jsx-with-curly-braces)
18-
- [Miten mukauttaa komponentteja propeilla](/learn/passing-props-to-a-component)
19-
- [Miten renderöidä ehdollisesti komponentteja](/learn/conditional-rendering)
20-
- [Miten renderöidä useita komponentteja samanaikaisesti](/learn/rendering-lists)
21-
- [Miten välttää bugeja pitämällä komponentit puhtaina](/learn/keeping-components-pure)
22-
=======
23-
* [How to write your first React component](/learn/your-first-component)
24-
* [When and how to create multi-component files](/learn/importing-and-exporting-components)
25-
* [How to add markup to JavaScript with JSX](/learn/writing-markup-with-jsx)
26-
* [How to use curly braces with JSX to access JavaScript functionality from your components](/learn/javascript-in-jsx-with-curly-braces)
27-
* [How to configure components with props](/learn/passing-props-to-a-component)
28-
* [How to conditionally render components](/learn/conditional-rendering)
29-
* [How to render multiple components at a time](/learn/rendering-lists)
30-
* [How to avoid confusing bugs by keeping components pure](/learn/keeping-components-pure)
31-
* [Why understanding your UI as trees is useful](/learn/understanding-your-ui-as-a-tree)
32-
>>>>>>> a0cacd7d3a89375e5689ccfba0461e293bfe9eeb
13+
* [Miten kirjoitat ensimmäisen komponenttisi](/learn/your-first-component)
14+
* [Miten ja milloin luot monikomponenttisia tiedostoja](/learn/importing-and-exporting-components)
15+
* [Miten lisäät merkintäkoodia JavaScriptiin JSX hyödyntäen](/learn/writing-markup-with-jsx)
16+
* [Miten käyttää aaltosulkeita JSX:n kanssa JavaScript toiminnallisuuksien hyödyntämiseksi komponenteissa](/learn/javascript-in-jsx-with-curly-braces)
17+
* [Miten mukauttaa komponentteja propeilla](/learn/passing-props-to-a-component)
18+
* [Miten renderöidä ehdollisesti komponentteja](/learn/conditional-rendering)
19+
* [Miten renderöidä useita komponentteja samanaikaisesti](/learn/rendering-lists)
20+
* [Miten välttää bugeja pitämällä komponentit puhtaina](/learn/keeping-components-pure)
21+
* [Miten UI:n ajatteleminen puuna on hyödyllistä](/learn/understanding-your-ui-as-a-tree)
3322

3423
</YouWillLearn>
3524

@@ -531,34 +520,30 @@ Lue **[Komponenttien pitäminen puhtaana](/learn/keeping-components-pure)** oppi
531520
532521
</LearnMore>
533522
534-
<<<<<<< HEAD
535-
## Mitä seuraavaksi? {/*whats-next*/}
536-
=======
537-
## Your UI as a tree {/*your-ui-as-a-tree*/}
523+
## UI puuna {/*your-ui-as-a-tree*/}
538524
539-
React uses trees to model the relationships between components and modules.
525+
React käyttää puita mallintaakseen relaatioita komponenttien ja moduulien välillä.
540526
541-
A React render tree is a representation of the parent and child relationship between components.
527+
React-renderöintipuu on esitys ylä- ja alatason suhteesta komponenttien välillä.
542528
543-
<Diagram name="generic_render_tree" height={250} width={500} alt="A tree graph with five nodes, with each node representing a component. The root node is located at the top the tree graph and is labelled 'Root Component'. It has two arrows extending down to two nodes labelled 'Component A' and 'Component C'. Each of the arrows is labelled with 'renders'. 'Component A' has a single 'renders' arrow to a node labelled 'Component B'. 'Component C' has a single 'renders' arrow to a node labelled 'Component D'.">An example React render tree.</Diagram>
529+
<Diagram name="generic_render_tree" height={250} width={500} alt="Puukaavio, jossa on viisi noodia, joissa jokainen noodi esittää komponenttia. Päänoodi sijaitsee ylhäällä ja on otsikoitu 'Root Component'. Sillä on kaksi nuolta, jotka osoittavat kahteen noodiin 'Component A' ja 'Component B'. Kumpikin nuoli on otsikoitu 'renders'. 'Component A':lla on yksi 'renders' nuoli noodiin 'Component B'. 'Component C':lla on yksi 'renders' nuoli noodiin otsikoitu 'Component D'.">Esimerkki React-renderöintipuusta.</Diagram>
544530
545-
Components near the top of the tree, near the root component, are considered top-level components. Components with no child components are leaf components. This categorization of components is useful for understanding data flow and rendering performance.
531+
Komponentit lähellä puun juurta, lähellä yläosaa, ajatellaan olevan ylätason komponentteja. Komponentteja, joilla ei ole alakomponentteja ovat lehti-komponentteja. Tämä kategorisointi komponenteista on hyvä ymmärtää datavirtauksen ja renderöintitehon kannalta.
546532
547-
Modelling the relationship between JavaScript modules is another useful way to understand your app. We refer to it as a module dependency tree.
533+
JavaScript-moduulien välisen suhteen mallintaminen on toinen hyödyllinen tapa ymmärtää sovellustasi. Viittaamme siihen moduuliriippuvuuspuuna.
548534
549-
<Diagram name="generic_dependency_tree" height={250} width={500} alt="A tree graph with five nodes. Each node represents a JavaScript module. The top-most node is labelled 'RootModule.js'. It has three arrows extending to the nodes: 'ModuleA.js', 'ModuleB.js', and 'ModuleC.js'. Each arrow is labelled as 'imports'. 'ModuleC.js' node has a single 'imports' arrow that points to a node labelled 'ModuleD.js'.">An example module dependency tree.</Diagram>
535+
<Diagram name="generic_dependency_tree" height={250} width={500} alt="Puugraafi, jossa on viisi noodia. Jokainen noodi edustaa JavaScript-moduulia. Ylin noodi on merkitty nimellä 'RootModule.js'. Siitä ulottuu kolme nuolta noodeihin: 'ModuleA.js', 'ModuleB.js' ja 'ModuleC.js'. Jokainen nuoli on merkitty 'imports'. 'ModuleC.js' -noodilla on yksi 'imports' -nuoli, joka osoittaa noodiin, joka on merkitty nimellä 'ModuleD.js'.">Esimerkki moduuliriippuvuuspuu.</Diagram>
550536
551-
A dependency tree is often used by build tools to bundle all the relevant JavaScript code for the client to download and render. A large bundle size regresses user experience for React apps. Understanding the module dependency tree is helpful to debug such issues.
537+
Riippuvuuspuuta käytetään usein rakennustyökaluissa, jotta kaikki relevantti JavaScript-koodi voidaan pakata selaimen ladattavaksi ja renderöitavaksi. Suuri pakkauskoko heikentää käyttäjäkokemusta React-sovelluksissa. Moduuliriippuvuuspuun ymmärtäminen on hyödyllistä tällaisia ongelmia debugatessa.
552538
553539
<LearnMore path="/learn/understanding-your-ui-as-a-tree">
554540
555-
Read **[Your UI as a Tree](/learn/understanding-your-ui-as-a-tree)** to learn how to create a render and module dependency trees for a React app and how they're useful mental models for improving user experience and performance.
541+
Lue **[Your UI as a Tree](/learn/understanding-your-ui-as-a-tree)** oppiaksesi, miten luoda renderöinti- ja moduuliriippuvuuspuut React-sovellukselle sekä miten ne ovat hyödyllisiä ajatusmalleja käyttäjäkokemuksen ja suorituskyvyn parantamiseksi.
556542
557543
</LearnMore>
558544
559545
560-
## What's next? {/*whats-next*/}
561-
>>>>>>> a0cacd7d3a89375e5689ccfba0461e293bfe9eeb
546+
## Mitä seuraavaksi? {/*whats-next*/}
562547
563548
Siirry seuraavaksi [Ensimmäinen komponenttisi](/learn/your-first-component) lukeaksesi tämän luvun sivu kerrallaan!
564549

src/content/learn/preserving-and-resetting-state.md

+3-38
Original file line numberDiff line numberDiff line change
@@ -10,50 +10,20 @@ Tila on eristetty komponenttien välillä. React pitää kirjaa siitä, mikä ti
1010

1111
<YouWillLearn>
1212

13-
<<<<<<< HEAD
1413
* Miten React "näkee" komponentin rakenteen
1514
* Milloin React päättää säilyttää tai nollata tilan
1615
* Miten pakottaa React nollaamaan komponentin tila
1716
* Miten avaimet ja tyypit vaikuttavat tilan säilyttämiseen
1817

1918
</YouWillLearn>
2019

21-
## Käyttöliittymäpuu {/*the-ui-tree*/}
22-
23-
Selaimet käyttävät monia puumalleja käyttöliittymän mallintamiseen. [DOM](https://developer.mozilla.org/docs/Web/API/Document_Object_Model/Introduction) edustaa HTML-elementtejä, [CSSOM](https://developer.mozilla.org/docs/Web/API/CSS_Object_Model) tekee saman CSS:lle. On olemassa jopa [saavutettavuuspuu](https://developer.mozilla.org/docs/Glossary/Accessibility_tree)!
24-
25-
React käyttää myös puurakenteita käyttöliittymäsi hallintaan ja mallintamiseen. React rakentaa **UI puita** JSX koodistasi. Sitten React DOM päivittää selaimen DOM elementit vastaamaan tuota UI puuta. (React Native kääntää nämä puut näkymiksi, jotka voidaan näyttää puhelinalustoilla.)
26-
27-
<DiagramGroup>
28-
29-
<Diagram name="preserving_state_dom_tree" height={193} width={864} alt="Kaavio, jossa on kolme vaakasuoraan sijoitettua osaa. Ensimmäisessä osassa on kolme pystysuoraan pinottua suorakulmiota, joissa on merkinnät 'Komponentti A', 'Komponentti B' ja 'Komponentti C'. Seuraavaan osioon siirtyy nuoli, jonka yläpuolella on React-logo ja jossa on merkintä 'React'. Keskimmäisessä osassa on komponenttien puu, jonka juuressa on merkintä 'A' ja kahdessa alakomponentissa merkinnät 'B' ja 'C'. Seuraavaan osioon siirrytään jälleen nuolella, jonka yläosassa on React-logo ja jossa on merkintä 'React'. Kolmas ja viimeinen osio on selaimen rautalankamalli, joka sisältää kahdeksan solmun puun, josta on korostettu vain osajoukko (joka osoittaa keskimmäisen osion alipuun).">
30-
31-
Komponenteista React luo käyttöliittymäpuun, jota React DOM käyttää renderöidäkseen DOM:n
32-
33-
</Diagram>
34-
35-
</DiagramGroup>
36-
3720
## Tila on sidottu sijaintiin puussa {/*state-is-tied-to-a-position-in-the-tree*/}
3821

22+
React rakentaa [renderöintipuun](learn/understanding-your-ui-as-a-tree#the-render-tree) UI:n komponenttirakenteesta.
23+
3924
Kun annat komponentille tilan, saatat ajatella, että tila "asuu" komponentin sisällä. Mutta tila oikeasti pidetään Reactin sisällä. React yhdistää jokaisen hallussa olevan tilatiedon oikeaan komponenttiin sen mukaan, missä kohtaa käyttöliittymäpuuta kyseinen komponentti sijaitsee.
4025

4126
Tässä esimerkissä on vain yksi `<Counter />` JSX tagi, mutta se on renderöity kahdessa eri kohdassa:
42-
=======
43-
* When React chooses to preserve or reset the state
44-
* How to force React to reset component's state
45-
* How keys and types affect whether the state is preserved
46-
47-
</YouWillLearn>
48-
49-
## State is tied to a position in the render tree {/*state-is-tied-to-a-position-in-the-tree*/}
50-
51-
React builds [render trees](learn/understanding-your-ui-as-a-tree#the-render-tree) for the component structure in your UI.
52-
53-
When you give a component state, you might think the state "lives" inside the component. But the state is actually held inside React. React associates each piece of state it's holding with the correct component by where that component sits in the render tree.
54-
55-
Here, there is only one `<Counter />` JSX tag, but it's rendered at two different positions:
56-
>>>>>>> a0cacd7d3a89375e5689ccfba0461e293bfe9eeb
5727

5828
<Sandpack>
5929

@@ -204,12 +174,7 @@ Tilan päivittäminen
204174

205175
</DiagramGroup>
206176

207-
<<<<<<< HEAD
208-
React pitää tilan muistissa niin kauan kuin renderlit samaa komponenttia samassa sijainnissa. Tämän nähdäksesi, korota molempia laskureita ja sitten poista toinen komponentti poistamalla valinta "Render the second counter" valintaruudusta, ja sitten lisää se takaisin valitsemalla se uudelleen:
209-
=======
210-
211-
React will keep the state around for as long as you render the same component at the same position in the tree. To see this, increment both counters, then remove the second component by unchecking "Render the second counter" checkbox, and then add it back by ticking it again:
212-
>>>>>>> a0cacd7d3a89375e5689ccfba0461e293bfe9eeb
177+
React pitää tilan muistissa niin kauan kuin renderöit samaa komponenttia samassa sijainnissa. Tämän nähdäksesi, korota molempia laskureita ja sitten poista toinen komponentti poistamalla valinta "Render the second counter" valintaruudusta, ja sitten lisää se takaisin valitsemalla se uudelleen:
213178

214179
<Sandpack>
215180

src/content/learn/referencing-values-with-refs.md

+1-5
Original file line numberDiff line numberDiff line change
@@ -284,11 +284,7 @@ Sinun ei myöskään tarvitse huolehtia [mutaatioiden välttämistä](/learn/upd
284284

285285
## Ref ja DOM {/*refs-and-the-dom*/}
286286

287-
<<<<<<< HEAD
288-
Voit osoittaa refin mihin tahansa arvoon. Kuitenkin yleisin käyttökohde refille on DOM elementin käsittely. Esimerkiksi, tämä on kätevää jos haluat focusoida syöttölaatikon ohjelmakoodissa. Kun annat refin `ref`-attribuuttiin JSX:ssä, kuten `<div ref={myRef}>`, React asettaa vastaavan DOM elementin `myRef.current`:iin. Voit lukea lisää tästä [Manipulating the DOM with Refs.](/learn/manipulating-the-dom-with-refs)
289-
=======
290-
You can point a ref to any value. However, the most common use case for a ref is to access a DOM element. For example, this is handy if you want to focus an input programmatically. When you pass a ref to a `ref` attribute in JSX, like `<div ref={myRef}>`, React will put the corresponding DOM element into `myRef.current`. Once the element is removed from the DOM, React will update `myRef.current` to be `null`. You can read more about this in [Manipulating the DOM with Refs.](/learn/manipulating-the-dom-with-refs)
291-
>>>>>>> a0cacd7d3a89375e5689ccfba0461e293bfe9eeb
287+
Voit osoittaa refin mihin tahansa arvoon. Kuitenkin yleisin käyttökohde refille on DOM elementin käsittely. Esimerkiksi, tämä on kätevää jos haluat kohdentaa syöttölaatikon ohjelmakoodissa. Kun annat refin `ref`-attribuuttiin JSX:ssä, kuten `<div ref={myRef}>`, React asettaa vastaavan DOM elementin `myRef.current`:iin. Kun elementti poistetaan DOM:sta, React päivittää `myRef.current` arvoksi `null`. Voit lukea lisää tästä [Manipulating the DOM with Refs.](/learn/manipulating-the-dom-with-refs)
292288

293289
<Recap>
294290

src/content/learn/rendering-lists.md

+1-5
Original file line numberDiff line numberDiff line change
@@ -1086,11 +1086,7 @@ Tässä `<Recipe {...recipe} key={recipe.id} />` on lyhytsyntaksi joka "välitt
10861086

10871087
#### Listat erottimella {/*list-with-a-separator*/}
10881088

1089-
<<<<<<< HEAD
1090-
Tämä esimerkki renderöi kuuluisan Katsushika Hokusain haikun, jokaisen rivin ollessa kääritty `<p>` tagin sisään. Tehtäväsi on sijoittaa `<hr />` erotin jokaisen kappaleen jälkeen. Lopputuloksen rakennelman pitäisi näyttää tältä:
1091-
=======
1092-
This example renders a famous haiku by Tachibana Hokushi, with each line wrapped in a `<p>` tag. Your job is to insert an `<hr />` separator between each paragraph. Your resulting structure should look like this:
1093-
>>>>>>> a0cacd7d3a89375e5689ccfba0461e293bfe9eeb
1089+
Tämä esimerkki renderöi kuuluisan Tachibana Hokushi haikun, jokaisen rivin ollessa kääritty `<p>` tagin sisään. Tehtäväsi on sijoittaa `<hr />` erotin jokaisen kappaleen jälkeen. Lopputuloksen rakennelman pitäisi näyttää tältä:
10941090

10951091
```js
10961092
<article>

src/content/learn/start-a-new-react-project.md

+3-18
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,7 @@ npx create-next-app@latest
2626

2727
Jos olet uusi Next.js:ään, tutustu [Next.js tutoriaaliin.](https://nextjs.org/learn/foundations/about-nextjs)
2828

29-
<<<<<<< HEAD
30-
Next.js:ää ylläpitää [Vercel](https://vercel.com/). Voit [julkaista Next.js-sovelluksen](https://nextjs.org/docs/deployment) mihin tahansa Node.js- tai serverless-ympäristöön, tai omalla palvelimellasi. [Täysin staattiset Next.js-sovellukset](https://nextjs.org/docs/advanced-features/static-html-export) voidaan julkaista missö tahansa staattisessa hosting-ympäristössä.
31-
=======
32-
Next.js is maintained by [Vercel](https://vercel.com/). You can [deploy a Next.js app](https://nextjs.org/docs/app/building-your-application/deploying) to any Node.js or serverless hosting, or to your own server. Next.js also supports a [static export](https://nextjs.org/docs/pages/building-your-application/deploying/static-exports) which doesn't require a server.
33-
>>>>>>> a0cacd7d3a89375e5689ccfba0461e293bfe9eeb
29+
Next.js:ää ylläpitää [Vercel](https://vercel.com/). Voit [julkaista Next.js-sovelluksen](https://nextjs.org/docs/app/building-your-application/deploying) mihin tahansa Node.js- tai serverless-ympäristöön, tai omalla palvelimellasi. Next.js tukee myös [staattista exporttia](https://nextjs.org/docs/pages/building-your-application/deploying/static-exports), joka ei vaadi palvelinta
3430

3531
### Remix {/*remix*/}
3632

@@ -93,20 +89,9 @@ Nämä ominaisuudet ovat lähempänä tuotantokäyttöä joka päivä, ja olemme
9389

9490
### Next.js (App Router) {/*nextjs-app-router*/}
9591

96-
<<<<<<< HEAD
97-
**[Next.js's App Router](https://beta.nextjs.org/docs/getting-started) on Next.js:n API:en uudelleensuunnittelu, joka tähtää React-tiimin full-stack arkkitehtuurin visioon.** Se antaa sinun hakea dataa asynkronisissa komponenteissa, jotka suoritetaan palvelimella tai jopa rakennusaikana.
92+
**[Next.js's App Router](https://nextjs.org/docs) on Next.js:n API:en uudelleensuunnittelu, joka tähtää React-tiimin full-stack arkkitehtuurin visioon.** Se antaa sinun hakea dataa asynkronisissa komponenteissa, jotka suoritetaan palvelimella tai jopa rakennusaikana.
9893

99-
Next.js:ää ylläpitää [Vercel](https://vercel.com/). Voit [julkaista Next.js-sovelluksen](https://nextjs.org/docs/deployment) mihin tahansa Node.js- tai serverless-ympäristöön, tai omalla palvelimellasi. Next.js tukee myös [staattista vientiä](https://nextjs.org/docs/advanced-features/static-html-export), joka ei vaadi palvelinta.
100-
<Pitfall>
101-
102-
**Next.js:n App Router on tällä hetkellä beta-vaiheessa eikä sitä vielä suositella tuotantokäyttöön** (maaliskuussa 2023). Kokeillaksesi sitä olemassa olevassa Next.js-projektissa, [seuraa tätä ohjeistusta](https://beta.nextjs.org/docs/upgrade-guide#migrating-from-pages-to-app).
103-
104-
</Pitfall>
105-
=======
106-
**[Next.js's App Router](https://nextjs.org/docs) is a redesign of the Next.js APIs aiming to fulfill the React team’s full-stack architecture vision.** It lets you fetch data in asynchronous components that run on the server or even during the build.
107-
108-
Next.js is maintained by [Vercel](https://vercel.com/). You can [deploy a Next.js app](https://nextjs.org/docs/app/building-your-application/deploying) to any Node.js or serverless hosting, or to your own server. Next.js also supports [static export](https://nextjs.org/docs/app/building-your-application/deploying/static-exports) which doesn't require a server.
109-
>>>>>>> a0cacd7d3a89375e5689ccfba0461e293bfe9eeb
94+
Next.js:ää ylläpitää [Vercel](https://vercel.com/). Voit [julkaista Next.js-sovelluksen](https://nextjs.org/docs/app/building-your-application/deploying) mihin tahansa Node.js- tai serverless-ympäristöön, tai omalla palvelimellasi. Next.js tukee myös [staattista exporttia](https://nextjs.org/docs/app/building-your-application/deploying/static-exports), joka ei vaadi palvelinta.
11095

11196
<DeepDive>
11297

src/content/learn/tutorial-tic-tac-toe.md

+3-7
Original file line numberDiff line numberDiff line change
@@ -2075,17 +2075,13 @@ export default function Game() {
20752075
}
20762076
```
20772077
2078-
<<<<<<< HEAD
2079-
Voit nähdä miltä koodisi tulisi näyttää alla. Huomaa, että sinun tulisi nähdä virhe kehittäjätyökalujen konsolissa, joka sanoo: ``Warning: Each child in an array or iterator should have a unique "key" prop. Check the render method of `Game`.`` Korjaat tämän virheen seuraavassa osiossa.
2080-
=======
2081-
You can see what your code should look like below. Note that you should see an error in the developer tools console that says:
2078+
Voit nähdä miltä koodisi tulisi näyttää alla. Huomaa, että sinun tulisi nähdä virhe kehittäjätyökalujen konsolissa, jossa lukee:
20822079
20832080
<ConsoleBlock level="warning">
20842081
Warning: Each child in an array or iterator should have a unique "key" prop. Check the render method of &#96;Game&#96;.
20852082
</ConsoleBlock>
2086-
2087-
You'll fix this error in the next section.
2088-
>>>>>>> a0cacd7d3a89375e5689ccfba0461e293bfe9eeb
2083+
2084+
Korjaat tämän virheen seuraavassa osiossa.
20892085
20902086
<Sandpack>
20912087

0 commit comments

Comments
 (0)