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/blog/2022/06/15/react-labs-what-we-have-been-working-on-june-2022.md
+1-1
Original file line number
Diff line number
Diff line change
@@ -8,7 +8,7 @@ June 15, 2022 by [Andrew Clark](https://twitter.com/acdlite), [Dan Abramov](http
8
8
9
9
<Intro>
10
10
11
-
[React 18](https://reactjs.org/blog/2022/03/29/react-v18) was years in the making, and with it brought valuable lessons for the React team. Its release was the result of many years of research and exploring many paths. Some of those paths were successful; many more were dead-ends that led to new insights. One lesson we’ve learned is that it’s frustrating for the community to wait for new features without having insight into these paths that we’re exploring.
11
+
[React 18](https://react.dev/blog/2022/03/29/react-v18) was years in the making, and with it brought valuable lessons for the React team. Its release was the result of many years of research and exploring many paths. Some of those paths were successful; many more were dead-ends that led to new insights. One lesson we’ve learned is that it’s frustrating for the community to wait for new features without having insight into these paths that we’re exploring.
-[Miten renderöidä useita komponentteja samanaikaisesti](/learn/rendering-lists)
20
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
21
33
22
34
</YouWillLearn>
23
35
@@ -519,7 +531,34 @@ Lue **[Komponenttien pitäminen puhtaana](/learn/keeping-components-pure)** oppi
519
531
520
532
</LearnMore>
521
533
534
+
<<<<<<< HEAD
522
535
## Mitä seuraavaksi? {/*whats-next*/}
536
+
=======
537
+
## Your UI as a tree {/*your-ui-as-a-tree*/}
538
+
539
+
React uses trees to model the relationships between components and modules.
540
+
541
+
A React render tree is a representation of the parent and child relationship between components.
542
+
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>
544
+
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.
546
+
547
+
Modelling the relationship between JavaScript modules is another useful way to understand your app. We refer to it as a module dependency tree.
548
+
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>
550
+
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.
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.
556
+
557
+
</LearnMore>
558
+
559
+
560
+
## What's next? {/*whats-next*/}
561
+
>>>>>>> a0cacd7d3a89375e5689ccfba0461e293bfe9eeb
523
562
524
563
Siirry seuraavaksi [Ensimmäinen komponenttisi](/learn/your-first-component) lukeaksesi tämän luvun sivu kerrallaan!
Copy file name to clipboardExpand all lines: src/content/learn/preserving-and-resetting-state.md
+21
Original file line number
Diff line number
Diff line change
@@ -10,6 +10,7 @@ Tila on eristetty komponenttien välillä. React pitää kirjaa siitä, mikä ti
10
10
11
11
<YouWillLearn>
12
12
13
+
<<<<<<< HEAD
13
14
* Miten React "näkee" komponentin rakenteen
14
15
* Milloin React päättää säilyttää tai nollata tilan
15
16
* Miten pakottaa React nollaamaan komponentin tila
@@ -38,6 +39,21 @@ Komponenteista React luo käyttöliittymäpuun, jota React DOM käyttää render
38
39
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.
39
40
40
41
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
41
57
42
58
<Sandpack>
43
59
@@ -188,7 +204,12 @@ Tilan päivittäminen
188
204
189
205
</DiagramGroup>
190
206
207
+
<<<<<<< HEAD
191
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:
Copy file name to clipboardExpand all lines: src/content/learn/referencing-values-with-refs.md
+4
Original file line number
Diff line number
Diff line change
@@ -284,7 +284,11 @@ Sinun ei myöskään tarvitse huolehtia [mutaatioiden välttämistä](/learn/upd
284
284
285
285
## Ref ja DOM {/*refs-and-the-dom*/}
286
286
287
+
<<<<<<< HEAD
287
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)
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:
Copy file name to clipboardExpand all lines: src/content/learn/start-a-new-react-project.md
+11-1
Original file line number
Diff line number
Diff line change
@@ -21,12 +21,16 @@ Jos haluat rakentaa uuden sovelluksen tai verkkosivuston täysin Reactilla, suos
21
21
**[Next.js](https://nextjs.org/) on full-stack React-ohjelmistokehys.** Se on monipuolinen ja antaa sinun luoda React-sovelluksia mistä tahansa koosta--lähes staattisesta blogista monimutkaiseen dynaamiseen sovellukseen. Luodaksesi uuden Next.js-projektin, aja terminaalissa:
22
22
23
23
<TerminalBlock>
24
-
npx create-next-app
24
+
npx create-next-app@latest
25
25
</TerminalBlock>
26
26
27
27
Jos olet uusi Next.js:ään, tutustu [Next.js tutoriaaliin.](https://nextjs.org/learn/foundations/about-nextjs)
28
28
29
+
<<<<<<< HEAD
29
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
30
34
31
35
### Remix {/*remix*/}
32
36
@@ -89,6 +93,7 @@ Nämä ominaisuudet ovat lähempänä tuotantokäyttöä joka päivä, ja olemme
89
93
90
94
### Next.js (App Router) {/*nextjs-app-router*/}
91
95
96
+
<<<<<<< HEAD
92
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.
93
98
94
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.
@@ -97,6 +102,11 @@ Next.js:ää ylläpitää [Vercel](https://vercel.com/). Voit [julkaista Next.js
97
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).
98
103
99
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.
Copy file name to clipboardExpand all lines: src/content/learn/tutorial-tic-tac-toe.md
+10
Original file line number
Diff line number
Diff line change
@@ -2075,7 +2075,17 @@ export default function Game() {
2075
2075
}
2076
2076
```
2077
2077
2078
+
<<<<<<< HEAD
2078
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:
2082
+
2083
+
<ConsoleBlock level="warning">
2084
+
Warning: Each child in an array or iterator should have a unique "key" prop. Check the render method of `Game`.
Copy file name to clipboardExpand all lines: src/content/learn/typescript.md
+9-1
Original file line number
Diff line number
Diff line change
@@ -284,7 +284,11 @@ export default App = AppTSX;
284
284
285
285
</Sandpack>
286
286
287
+
<<<<<<< HEAD
287
288
Tämä tekniikka toimii kun sinulla on oletusarvo joka on järkevä - mutta on tapauksia jolloin sitä ei ole, ja näissä tapauksissa `null` voi tuntua järkevältä oletusarvolta. Kuitenkin, jotta tyyppijärjestelmä ymmärtäisi koodisi, sinun täytyy eksplisiittisesti asettaa `ContextShape | null``createContext`:lle.
289
+
=======
290
+
This technique works when you have a default value which makes sense - but there are occasionally cases when you do not, and in those cases `null` can feel reasonable as a default value. However, to allow the type-system to understand your code, you need to explicitly set `ContextShape | null` on the `createContext`.
291
+
>>>>>>> a0cacd7d3a89375e5689ccfba0461e293bfe9eeb
288
292
289
293
Tämä aiheuttaa ongelman jossa sinun täytyy eliminoida `| null` tyyppi kontekstin kuluttajilta. Suosituksemme on että hookki tekee runtime tarkistuksen sen olemassaolosta ja heittää virheen kun sitä ei ole:
-[React TypeScript Cheatsheet](https://react-typescript-cheatsheet.netlify.app/) on yhteisön ylläpitämä lunttilappu TypeScriptin käyttöön Reactin kanssa, kattaa paljon hyödyllisiä reunoja ja tarjoaa enemmän syvyyttä kuin tämä dokumentti.
462
466
463
-
-[TypeScript Community Discord](https://discord.com/invite/typescript) on hyvä paikka kysyä kysymyksiä ja saada apua TypeScriptin ja Reactin ongelmiin.
467
+
<<<<<<< HEAD
468
+
-[TypeScript Community Discord](https://discord.com/invite/typescript) on hyvä paikka kysyä kysymyksiä ja saada apua TypeScriptin ja Reactin ongelmiin.
469
+
=======
470
+
-[TypeScript Community Discord](https://discord.com/invite/typescript) is a great place to ask questions and get help with TypeScript and React issues.
0 commit comments