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: content/docs/state-and-lifecycle.md
+43-43Lines changed: 43 additions & 43 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -8,7 +8,7 @@ prev: components-and-props.html
8
8
next: handling-events.html
9
9
---
10
10
11
-
Ez az oldal az állapot és életcilus fogalmakat mutatja be egy React komponensben. A [részletes komponens API referenciát itt](/docs/react-component.html) találod.
11
+
Ez az oldal az állapot és életciklus fogalmait mutatja be egy React komponensben. A [részletes komponens API referenciát itt](/docs/react-component.html) találod.
12
12
13
13
Vedd a ketyegő óra példát [az egyik korábbi fejezetből](/docs/rendering-elements.html#updating-the-rendered-element). Az [Elemek renderelése](/docs/rendering-elements.html#rendering-an-element-into-the-dom) fejezetben csak egyetlen módját tanultuk meg a felhasználói felület frissítésének. A `ReactDOM.render()` metódus meghívásával megváltoztatjuk a renderelt kimenetet:
14
14
@@ -31,9 +31,9 @@ setInterval(tick, 1000);
31
31
32
32
[**Próbáld ki a CodePen-en**](https://codepen.io/gaearon/pen/gwoJZk?editors=0010)
33
33
34
-
Ebben a fejezetben megtanuljuk hogy, hogyan tehetjük a `Clock` komponenst igazán újrafelhasználhatóvás és egységbe foglalttá tenni. Fel fogja állítani a saját időzítőjét, és frissíti magát minden másodpercben.
34
+
Ebben a fejezetben megtanuljuk, hogy hogyan tudjuk a `Clock` komponenst igazán újrafelhasználhatóvá és egységbe foglalttá tenni. Saját időzítőt fog beállítani, hogy minden másodpercben frissíteni tudja önmagát.
35
35
36
-
Kezdhetjük azzal, hogy hogyan foglaljuk egységbe azt ahogyan az óra kinéz:
36
+
Kezdhetjük azzal, hogy hogyan foglaljuk egységbe azt, ahogyan az óra kinéz:
37
37
38
38
```js{3-6,12}
39
39
function Clock(props) {
@@ -57,7 +57,7 @@ setInterval(tick, 1000);
57
57
58
58
[**Próbáld ki a CodePen-en**](https://codepen.io/gaearon/pen/dpdoYR?editors=0010)
59
59
60
-
Azonban ebből hiányzik valami nagyon fontos: A tény, hogy a `Clock` komponens felállít egy időzítőt és minden másodpercben frissíti a felhasználói felületet, a `Clock`egy implementációs részlet kell hogy legyen.
60
+
Azonban ebből hiányzik valami nagyon fontos: Az a tény, hogy a `Clock` komponens beállít egy időzítőt és minden másodpercben frissíti a felhasználói felületet, a `Clock`komponens saját implementációs részlete kell hogy legyen.
61
61
62
62
Ideális esetben ezt egyszer szeretnénk megírni és hagyjuk a `Clock`-ot saját magát frissíteni:
63
63
@@ -74,13 +74,13 @@ Az állapot hasonló a prop-okhoz, de privát a komponensre nézve, és teljes m
Egy függvény komponenst, mint például a `Clock` ebben az öt lépésben tudsz osztállyá konvertálni:
77
+
Egy függvény komponenst, mint például a `Clock`-ot, ebben az öt lépésben tudsz osztállyá konvertálni:
78
78
79
-
1. Készíts egy [ES6 osztályt](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Classes), ugyanazzal a névvel, ami `React.Component`-t terjeszti ki.
79
+
1. Készíts egy [ES6 osztályt](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Classes) ugyanazzal a névvel és terjeszd ki a `React.Component` osztályt.
80
80
81
81
2. Adj hozzá egy üres `render()` metódust.
82
82
83
-
3.Tedd át a a függvény testét a `render()` metódusba.
83
+
3.Helyezd át a a függvény testét a `render()` metódusba.
84
84
85
85
4. Nevezd át a `props`-ot `this.props`-ra a `render()` testében.
86
86
@@ -103,13 +103,13 @@ class Clock extends React.Component {
103
103
104
104
A `Clock` most már osztályként van definiálva függvény helyett.
105
105
106
-
A `render` metódus minden alkalommal meg lesz hívva, ha egy frissítés történik, de amíg a `<Clock />`-ot ugyanabba a DOM csomópontba rendereljük, addig a `Clock` osztálynak csupán egy példánya lesz használva. Ez lehetővé teszi nekünk olyan fuknciók hozzáadását mint a helyi állapot, és életciklus metódusok.
106
+
A `render` metódus minden alkalommal meg lesz hívva ha egy frissítés történik, de amíg a `<Clock />`-ot ugyanabba a DOM csomópontba rendereljük, addig a `Clock` osztálynak csupán egy példánya lesz használva. Ez lehetővé teszi olyan funkciók hozzáadását mint a helyi állapot és életciklus metódusok.
107
107
108
108
## Helyi állapot hozzáadása egy osztályhoz {#adding-local-state-to-a-class}
109
109
110
-
Mozgassuk a `date` objektumot a props-ból a state-be három lépésben:
110
+
Helyezzük át a `date` objektumot a props-ból a state-be három lépésben:
111
111
112
-
1) Nevezd át a `this.props.date`-t`this.state.date`-re a `render()` metódusban:
112
+
1) Nevezd át a `this.props.date`-et`this.state.date`-re a `render()` metódusban:
113
113
114
114
```js{6}
115
115
class Clock extends React.Component {
@@ -124,7 +124,7 @@ class Clock extends React.Component {
124
124
}
125
125
```
126
126
127
-
2) Adj hozzá egy [osztály konstruktort](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Classes#Constructor) ami hozzárendel egy kezdetleges `this.state`-t:
127
+
2) Adj hozzá egy [osztály konstruktort](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Classes#Constructor), ami hozzárendel egy kezdetleges `this.state`-et:
128
128
129
129
```js{4}
130
130
class Clock extends React.Component {
@@ -144,7 +144,7 @@ class Clock extends React.Component {
144
144
}
145
145
```
146
146
147
-
Vedd észre hogy az alap kontruktornak küldjük a `props`-ot:
147
+
Figyeld meg, hogy hogyan adjuk át az alapkonstruktornak a `props`-ot:
148
148
149
149
```js{2}
150
150
constructor(props) {
@@ -153,9 +153,9 @@ Vedd észre hogy az alap kontruktornak küldjük a `props`-ot:
153
153
}
154
154
```
155
155
156
-
Az osztálykomonensek kontruktorai mindig a `props`-al kell hogy legyenek meghívva.
156
+
Az osztálykomponensek konstruktorai mindig meg kell hogy hívják az alapkonstruktort a `props` átadásával.
157
157
158
-
3) Töröld a `date` prop-ot a `<Clock />` elemből:
158
+
3) Töröld ki a `date` prop-ot a `<Clock />` elemből:
159
159
160
160
```js{2}
161
161
ReactDOM.render(
@@ -164,7 +164,7 @@ ReactDOM.render(
164
164
);
165
165
```
166
166
167
-
Az időzítő kódot később hozzáadjuk magához a komponenshez.
167
+
Az időzítő kódját később adjuk vissza a komponensbe.
168
168
169
169
Az eredmény így néz ki:
170
170
@@ -193,15 +193,15 @@ ReactDOM.render(
193
193
194
194
[**Próbáld ki a CodePen-en**](https://codepen.io/gaearon/pen/KgQpJd?editors=0010)
195
195
196
-
A következőben hagyjuk hogy a `Clock` maga állítson fel egy időzítőt, és frissítse magát minden másodpercben.
196
+
A következőben hagyjuk, hogy a `Clock` maga állítson be egy időzítőt és frissítse magát minden másodpercben.
197
197
198
198
## Életciklus metódusok hozzáadása egy osztályhoz {#adding-lifecycle-methods-to-a-class}
199
199
200
-
Sok komponenssel rendelkező alkalmazásokban nagyon fontos hogy a komponensek által elfoglalt forrásokatfelszabadítsuk amikor azok elpusztulnak.
200
+
Sok komponenssel rendelkező alkalmazásokban nagyon fontos, hogy a komponensek által elfoglalt erőforrásokat felszabadítsuk, amikor azok elpusztulnak.
201
201
202
-
Szeretnénk [felállítani egy időzítőt](https://developer.mozilla.org/en-US/docs/Web/API/WindowTimers/setInterval) amikor a `Clock` először lesz renderelve a DOM-ba. A React-ben ezt hívjuk "előkészítés"-nek, vagy "mounting"-nak.
202
+
Szeretnénk [felállítani egy időzítőt](https://developer.mozilla.org/en-US/docs/Web/API/WindowTimers/setInterval), amikor a `Clock` először renderelődik DOM-ba. A Reactben ezt hívjuk "előkészítés"-nek, vagy "mounting"-nak.
203
203
204
-
Azt is szeretnénk, ha az [időzítő törölve lenne](https://developer.mozilla.org/en-US/docs/Web/API/WindowTimers/clearInterval) amikor a DOM által készített `Clock` el lesz távolítva. A React-ben ezt hívjuk "leválasztás"-nak vagy "unmounting"-nak.
204
+
Azt is szeretnénk, ha az [időzítő törölve lenne](https://developer.mozilla.org/en-US/docs/Web/API/WindowTimers/clearInterval), amikor a DOM által készített `Clock` el lesz távolítva. A React-ben ezt hívjuk "leválasztás"-nak vagy "unmounting"-nak.
205
205
206
206
A komponens oszályban tudunk speciális metódusokat deklarálni, amik lefuttatnak egy kódot amikor a komponens előkészül, vagy leválik:
207
207
@@ -233,7 +233,7 @@ class Clock extends React.Component {
233
233
234
234
Ezeket a metódusokat "életciklus" metódusoknak" hívjuk.
235
235
236
-
A `componentDidMount()` metódus azután fut le, hogy a komponens kimenete a DOM-ba lett renderelve. Ez egy jó hely az időzítő felállítására:
236
+
A `componentDidMount()` metódus azután fut le, hogy a komponens kimenete a DOM-ba lett renderelve. Ez egy jó hely az időzítő beállítására:
237
237
238
238
```js{2-5}
239
239
componentDidMount() {
@@ -244,11 +244,11 @@ A `componentDidMount()` metódus azután fut le, hogy a komponens kimenete a DOM
244
244
}
245
245
```
246
246
247
-
Vedd észre hogy az időzítő azonosítóját közvetlenül a `this`-re mentjük (`this.timerID`).
247
+
Vedd észre, hogy az időzítő azonosítóját közvetlenül a `this`-re mentjük (`this.timerID`).
248
248
249
-
Míg a `this.props`-ot maga a React állítja fel, és a `this.state`-nek speciális jelentése van, te nyugodtan adhatsz hozzá manuálisan egyéb mezőket, ha valamit tárolni szeretnél ami nem vesz részt az adatfolyamban (mint például az időzítő azonosító).
249
+
Míg a `this.props`-ot maga a React állítja fel, és a `this.state`-nek speciális jelentése van, te nyugodtan adhatsz hozzá manuálisan egyéb mezőket, ha valamit tárolni szeretnél, ami nem vesz részt az adatfolyamban (mint például az időzítő azonosító).
250
250
251
-
Az időzítőt a `componentWillUnmount()` életciklus metódusban fogjuk lebontani:
251
+
Az időzítőt a `componentWillUnmount()` életciklus metódusban fogjuk leállítani:
252
252
253
253
```js{2}
254
254
componentWillUnmount() {
@@ -258,7 +258,7 @@ Az időzítőt a `componentWillUnmount()` életciklus metódusban fogjuk lebonta
258
258
259
259
Végezetül implementálni fogunk egy `tick()` metódust, amit a `Clock` komponens fog futtatni minden másodpercben.
260
260
261
-
Ez a `this.setState()`metódust fogja használni ami a frissítéseket ütemezi a helyi állapoton:
261
+
Ez a `this.setState()`metódus segítségével fogja a komponens helyi állapotát frissíteni.
262
262
263
263
```js{18-22}
264
264
class Clock extends React.Component {
@@ -306,19 +306,19 @@ Az óra most már minden másodpercben kettyen.
306
306
307
307
Vegyük át gyorsan mi is történik és a metódusok milyen sorrendben vannak meghívva:
308
308
309
-
1) Amikor a `<Clock />`-t küldjük a `ReactDOM.render()` metódusnak, a React meghívja a `Clock` komponens konstruktorát. Mivel a `Clock` komponensnek meg kell jelenítenie a jelenlegi időt, ez inicializál egy `this.state`-et, ami egy objektumot tartalmaz a jelenlegi idővel. Később ezt az állapotot frissítjük.
309
+
1) Amikor a `<Clock />`-ot átadjuk a `ReactDOM.render()` metódusnak, a React meghívja a `Clock` komponens konstruktorát. Mivel a `Clock` komponensnek meg kell jelenítenie a jelenlegi időt, ez inicializál egy `this.state`-et, ami egy objektumot tartalmaz a jelenlegi idővel. Később ezt az állapotot frissítjük.
310
310
311
-
2) Ezután a React meghívja a `Clock` komponens `render()` metódusát. A React így tanulja megmit kell mutatnia a képernyőn. A React ezután frissíti a DOM-ot hogy az megegyezzen a `Clock` render kimenetével.
311
+
2) Ezután a React meghívja a `Clock` komponens `render()` metódusát. A React ennek segítségével állapítja meg, hogy mit kell mutatnia a képernyőn. A React ezután frissíti a DOM-ot, hogy az megegyezzen a `Clock` render kimenetével.
312
312
313
-
3) Amikor a `Clock` kimenet be van illesztve a DOM-ba, a React meghívja a `componentDidMount()` életciklus metódust. Ezen belül a `Clock` komponens megkéri a böngészőt, hogy az állítson fel egy időzítőt ami minden másodpercben meghívja komponens `tick()` metódusát.
313
+
3) Amikor a `Clock` kimenet be van illesztve a DOM-ba, a React meghívja a `componentDidMount()` életciklus metódust. Ezen belül a `Clock` komponens megkéri a böngészőt, hogy az állítson fel egy időzítőt, ami minden másodpercben meghívja a komponens `tick()` metódusát.
314
314
315
-
4) A böngésző minden másodpercben meghívja a `tick()` metódust. Ezen belül, a `Clock` komponens beütemez egy kezelői felület frissítést a `setState()` meghívásával egy objektummal ami a jelenlegi időt tartalmazza. A `setState()` hívásnak köszönhetően a React tudja hogy az állapot megváltozott és újra meghívja a `render()` metódust hogy megtudja minek kéne megjelennie a képernyőn. Ezúttal a `this.state.date` a `render()` metódusban más lesz, és ezért a render kimenete tartalmazni fogja a frissítet időt. A React ennek megfelelően frissíti a DOM-ot.
315
+
4) A böngésző minden másodpercben meghívja a `tick()` metódust. Ezen belül, a `Clock` komponens beütemez egy kezelői felület frissítést a `setState()` meghívásával egy objektummal, ami a jelenlegi időt tartalmazza. A `setState()` hívásnak köszönhetően a React tudja, hogy az állapot megváltozott, és újra meghívja a `render()` metódust, hogy megtudja, minek kéne megjelennie a képernyőn. Ezúttal a `this.state.date` a `render()` metódusban más lesz, és ezért a render kimenete tartalmazni fogja a frissítet időt. A React ennek megfelelően frissíti a DOM-ot.
316
316
317
317
5) Ha a `Clock` komponens el lesz távolítva a DOM-ból, a React meghívja a `componentWillUnmount()` életciklus metódust és az időzítő így megáll.
318
318
319
319
## Az állapot helyes használata {#using-state-Helyesly}
320
320
321
-
Van három dolog amit tudnod kell a `setState()` metódusról.
321
+
Három dolog van, amit tudnod kell a `setState()` metódusról.
322
322
323
323
### Ne módosítsd az állapotot közvetlenül {#do-not-modify-state-directly}
324
324
@@ -336,15 +336,15 @@ Használd helyette a `setState()`-t:
336
336
this.setState({comment:'Helló'});
337
337
```
338
338
339
-
Az egyetlen hely ahol bármit is hozzárendelhetsz a `this.state`-hez az a konstruktor.
339
+
Az egyetlen hely, ahol bármit is hozzárendelhetsz a `this.state`-hez, az a konstruktor.
340
340
341
341
### Az állapot frissítések lehetnek aszinkronok {#state-updates-may-be-asynchronous}
342
342
343
343
A React összefoghat egy csomó `setState()` hívást egy szimpla frissítésbe a teljesítmény növelése érdekében.
344
344
345
345
Mivel a `this.props` és a `this.state` frissülhet aszinkron módon, nem szabad az értékeikre hagyatkoznod a következő állapot kiszámításához.
346
346
347
-
Például ez a kód lehet hogy nem fogja tudni frissíteni a számlálót:
347
+
Például ez a kód lehet, hogy nem fogja tudni frissíteni a számlálót:
348
348
349
349
```js
350
350
// Helytelen
@@ -353,7 +353,7 @@ this.setState({
353
353
});
354
354
```
355
355
356
-
Hogy ezt kijavítsd, használd a `setState()` másik formáját, ami egy függvényt fogad argumentumként, egy objektum helyett. A függvény fogadja az előző állapotot első argumentumként, valamint az előző props-ot másodikként:
356
+
Hogy ezt kijavítsd, használd a `setState()` másik formáját, ami egy függvényt fogad argumentumként egy objektum helyett. A függvény fogadja az előző állapotot első argumentumként, valamint az előző props-ot másodikként:
A fentiekben egy [nyíl függvényt](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Functions/Arrow_functions) használtunk, de ez működne egy átlagos függvényyel is:
365
+
A fentiekben egy [nyíl függvényt](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Functions/Arrow_functions) használtunk, de ez működne egy átlagos függvénnyel is:
366
366
367
367
```js
368
368
// Helyes
@@ -407,15 +407,15 @@ Ezek aztán függetlenül frissíthetőek különálló `setState()` hívásokka
407
407
}
408
408
```
409
409
410
-
Az egyesítés sekély, tehát a `this.setState({comments})` érintetlenül hagyja a `this.state.posts`-ot, de teljesen lecseréli a `this.state.comments`-t.
410
+
Az egyesítés sekély, tehát a `this.setState({comments})` érintetlenül hagyja a `this.state.posts`-ot, de teljesen lecseréli a `this.state.comments`-et.
411
411
412
412
## Az adat lefelé folyik {#the-data-flows-down}
413
413
414
-
Sem a felnőtt sem a gyermek komponensek nem tudják hogy egy bizonyos komponens állapot teljes, vagy állapot nélküli és az sem kell hogy érdekelje őket hogy függvényként vagy osztályként van az definiálva.
414
+
Sem a felnőtt, sem a gyermek komponens nem tudhatja, hogy egy bizonyos komponens állapotteljes vagy állapot nélküli, és az sem kell hogy érdekelje őket, hogy függvényként vagy osztályként van-e definiálva.
415
415
416
-
Ezért van az hogy az állapotot gyakran hívjuk helyinek, vagy elzártnak. Nem hozzáférhető semelyik másik komponensnek, csak annak amelyik azt birtojolja és felállítja.
416
+
Ezért van az, hogy az állapotot gyakran hívjuk helyinek, vagy egységbe zártnak. Nem hozzáférhető semelyik másik komponensből, csak abból amelyik birtokolja és beállítja.
417
417
418
-
Egy komponens választhat úgy, hogy leküldi a saját állapotát prop-ként a gyermek komponenseinek:
418
+
Egy komponens dönthet úgy, hogy leküldi a saját állapotát prop-ként a gyermek komponenseinek:
419
419
420
420
```js
421
421
<h2>Az idő {this.state.date.toLocaleTimeString()}.</h2>
@@ -427,7 +427,7 @@ Ez működik felhasználó által definiált komponensnél is:
427
427
<FormattedDate date={this.state.date} />
428
428
```
429
429
430
-
A `FormattedDate` komponens fogadná a `date`-t a prop-jaiban és nem tudná hogy az a `Clock` állapotából, a `Clock` prop-jából, jött, vagy az kézzel lett beírva:
430
+
A `FormattedDate` komponens megkapja a `date`-et a props-ban, és nem tudja, hogy az a `Clock` állapotából, a `Clock` prop-jából jött, vagy kézzel lett beírva:
431
431
432
432
```js
433
433
functionFormattedDate(props) {
@@ -437,11 +437,11 @@ function FormattedDate(props) {
437
437
438
438
[**Próbáld ki a CodePen-en**](https://codepen.io/gaearon/pen/zKRqNB?editors=0010)
439
439
440
-
Ezt közismerten "felülről lefelé irányuló", vagy egyirányú adat folyamnak hívjük. Bármilyen állapot mindig is birtokolva van egy bizonyos komponens által és bármilyen adat vagy kezelőfelület ami ebből az állapotból ered csakis ezen komponens "alatt" hathat a fára.
440
+
Ezt közismerten "felülről lefelé irányuló", vagy egyirányú adatfolyamnak hívjuk. Egy adott állapotot mindig csak egy bizonyos komponens birtokolhat, és ez az állapot csakis a komponensfában 'alatta lévő' komponensek adataira vagy megjelenésére hathat.
441
441
442
-
Ha úgy képzelsz el egy komponens fát mint a prop-ok vízesését, minden komponens állapota olyan mint egy plusz vízforrás ami tetszőleges pontokon belecsatlakozik a lefelé haladó áramlatba.
442
+
Ha úgy képzelsz el egy komponensfát, mint a prop-ok vízesését, minden komponens állapota olyan, mint egy plusz vízforrás, ami tetszőleges pontokon belecsatlakozik a lefelé haladó áramlatba.
443
443
444
-
Hogy megmutassuk azt hogy minden komponens tényleg teljesen izolált, készíthetünk egy `App` komponenst ami három `<Clock>`-t renderel:
444
+
Hogy megmutassuk azt, hogy minden komponens tényleg teljesen izolált, készíthetünk egy `App` komponenst, ami három `<Clock>`-t renderel:
445
445
446
446
```js{4-6}
447
447
function App() {
@@ -462,6 +462,6 @@ ReactDOM.render(
462
462
463
463
[**Próbáld ki a CodePen-en**](https://codepen.io/gaearon/pen/vXdGmd?editors=0010)
464
464
465
-
Minden `Clock`felállítja a saját időzítőjét és egymástól függetlenül frissítenek.
465
+
Minden `Clock`beállítja a saját időzítőjét és ezek egymástól függetlenül frissülnek.
466
466
467
-
Függetlenül attól hogy egy komponens állapot teljes vagy állapot nélküli, a React alkalmazásokban a komponensek implementációs részletei idővel megváltozhatónak tekinthetőek. Használhatsz állapot nélküli komponenseket állapot teljes komponenseken belül, és fordítva.
467
+
Az, hogy egy React komponens állapotteljes vagy állapot nélküli, a saját implementációs részletének tekinthető, ami idővel változhat. Emiatt használhatsz állapot nélküli komponenseket állapotteljes komponenseken belül, és ugyanígy fordítva is.
0 commit comments