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/thinking-in-react.md
+18-18Lines changed: 18 additions & 18 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -74,9 +74,9 @@ Ezt a lépést befejezve lesz egy könyvtárad többször hasznosítható kompon
74
74
75
75
Fordulj a [React dokumentációhoz](/docs/) ha segítségre van szükséged a fenti lépés elvégzéséhez!
76
76
77
-
### Egy kis közjáték: `props` vagy `state` {#a-brief-interlude-props-vs-state}
77
+
### Egy kis közjáték: props vagy state {#a-brief-interlude-props-vs-state}
78
78
79
-
Kétféle adatot használunk Reactban, van `props` és `state`. Fontos megérteni a különbséget; fusd végig a [hivatalos React dokumentációt](/docs/state-and-lifecycle.html) ha nem vagy biztos benne, hogy ez már világos! Lásd még [GYÍK: `state` vagy `props`, mi a különbség?](/docs/faq-state.html#what-is-the-difference-between-state-and-props)
79
+
Kétféle adatot használunk Reactban, van props és state. Fontos megérteni a különbséget; fusd végig a [hivatalos React dokumentációt](/docs/state-and-lifecycle.html) ha nem vagy biztos benne, hogy ez már világos! Lásd még [GYÍK: state vagy props, mi a különbség?](/docs/faq-state.html#what-is-the-difference-between-state-and-props)
80
80
81
81
## Harmadik lépés: Azonosítsd a UI állapot minimális (de teljes) reprezentációját {#step-3-identify-the-minimal-but-complete-representation-of-ui-state}
82
82
@@ -93,13 +93,13 @@ Vegyük végig a példánkban szereplő adatokat:
93
93
94
94
Nézzük hát ezekből mi lehet állapot? Ezeket a kérdéseket kell feltenned mindegyikkel kapcsolatban:
95
95
96
-
1. Egy szülő komponenstől kaptuk props-on keresztül? Ha igen, akkor ez valószínűleg nem `state`.
97
-
2. Változatlan marad az idő elteltével? Ha igen, feltehetőleg nem `state`.
98
-
3. Elő tudod állítani az egyéb `state` és a `props` alapján? Ha igen, akkor nem `state`.
96
+
1. Egy szülő komponenstől kaptuk props-on keresztül? Ha igen, akkor ez valószínűleg nem state.
97
+
2. Változatlan marad az idő elteltével? Ha igen, feltehetőleg nem state.
98
+
3. Elő tudod állítani az egyéb state és a props alapján? Ha igen, akkor nem state.
99
99
100
-
Az eredeti terméklista `props`ban érkezik, tehát nem `state`. A keresés szövege és a jelölőnégyzet `state` lesz, hiszen megváltozhatnak és nem számíthatók ki más adatokból. Végül a leszűrt terméklista sem `state` hiszen az eredeti lista és kereső szöveg valamint a jelölőnégyzet állapota alapján számolható.
100
+
Az eredeti terméklista propsban érkezik, tehát nem state. A keresés szövege és a jelölőnégyzet state lesz, hiszen megváltozhatnak és nem számíthatók ki más adatokból. Végül a leszűrt terméklista sem state hiszen az eredeti lista és kereső szöveg valamint a jelölőnégyzet állapota alapján számolható.
101
101
102
-
Tehát ennyi lett a `state`:
102
+
Tehát ennyi lett a state:
103
103
104
104
* A felhasználó által megadott keresőszöveg
105
105
* A jelölőnégyzet értéke
@@ -108,38 +108,38 @@ Tehát ennyi lett a `state`:
108
108
109
109
<pdata-height="600"data-theme-id="0"data-slug-hash="qPrNQZ"data-default-tab="js"data-user="lacker"data-embed-version="2"class="codepen">Nézd meg a <ahref="https://codepen.io/gaearon/pen/qPrNQZ">Thinking In React: Step 4</a>-t a <ahref="https://codepen.io">CodePen</a>en.</p>
110
110
111
-
OK, szóval meghatároztuk mi a minimális `state` az alkalmazásunkban. Most el kell döntenünk melyik komponens változtatja vagy *birtokolja* ezt a `state`-et.
111
+
OK, szóval meghatároztuk mi a minimális state az alkalmazásunkban. Most el kell döntenünk melyik komponens változtatja vagy *birtokolja* ezt a state-et.
112
112
113
-
Emlékezz: A React lényege az egy irányú adatáramlás a komponens hierarchiában. Talán nem egyértelmű melyik komponenshez melyik `state` tartozik. **Gyakran ezt megérteni a legnagyobb kihívás kezdők számára,** de csak kövesd ezeket a lépéseket:
113
+
Emlékezz: A React lényege az egy irányú adatáramlás a komponens hierarchiában. Talán nem egyértelmű melyik komponenshez melyik state tartozik. **Gyakran ezt megérteni a legnagyobb kihívás kezdők számára,** de csak kövesd ezeket a lépéseket:
114
114
115
-
Minden azonosított `state`-hez az alkalmazásodban:
115
+
Minden azonosított state-hez az alkalmazásodban:
116
116
117
-
* Azonosíts minden komponenst amely renderel valamit az adott `state` alapján
118
-
* Keresd meg a közös komponenst (egy bizonyos komponens a hierarchiában, ami felette áll `state`-et használó minden komponensnek).
119
-
* Vagy a közös szülő, vagy egy másik a hierarchiában magasabban álló komponens kell birtokolja a `state`-et.
120
-
* Ha nem találsz olyan komponenst ahol van értelme a `state`-et elhelyezni, létrehozhatsz egyet pusztán azért, hogy azt kezelje és illeszd a hierarchiába valahol a közös bitrokló komponens felé.
117
+
* Azonosíts minden komponenst amely renderel valamit az adott state alapján
118
+
* Keresd meg a közös komponenst (egy bizonyos komponens a hierarchiában, ami felette áll state-et használó minden komponensnek).
119
+
* Vagy a közös szülő, vagy egy másik a hierarchiában magasabban álló komponens kell birtokolja a state-et.
120
+
* Ha nem találsz olyan komponenst ahol van értelme a state-et elhelyezni, létrehozhatsz egyet pusztán azért, hogy azt kezelje és illeszd a hierarchiába valahol a közös bitrokló komponens felé.
121
121
122
122
Próbáljuk ki ezt a stratégiát az alkalmazásunkon:
123
123
124
124
* A `ProductTable` le kell szűrje a listát és a `SearchBar` meg kell jelenítse a kereső szöveget és jelölőnégyzet állapotát.
125
125
* A közös bitrokló komponens számukra a `FilterableProductTable`.
126
126
* Fogalmilag tényleg van értelme, hogy mindkét érték a `FilterableProductTable` komponensben lakjon.
127
127
128
-
Király, ezzel el is döntöttük, a `state` helye a `FilterableProductTable`. Először, vegyük fel hozzá a példány tulajdonságot a `FilterableProductTable` konstruktorába és adjunk neki kezdeti értéket is: `this.state = {filterText: '', inStockOnly: false}`. Ezután adjuk tovább a `filterText` és `inStockOnly` értékét a `ProductTable` és a `SearchBar` számára `props`ban. Végül a `ProductTable`-ben használjuk őket szűrésre és jelenítsük meg az értéküket a `SearchBar` űrlap mezőiben.
128
+
Király, ezzel el is döntöttük, a state helye a `FilterableProductTable`. Először, vegyük fel hozzá a példány tulajdonságot a `FilterableProductTable` konstruktorába és adjunk neki kezdeti értéket is: `this.state = {filterText: '', inStockOnly: false}`. Ezután adjuk tovább a `filterText` és `inStockOnly` értékét a `ProductTable` és a `SearchBar` számára propsban. Végül a `ProductTable`-ben használjuk őket szűrésre és jelenítsük meg az értéküket a `SearchBar` űrlap mezőiben.
129
129
130
130
Hogy viselkedik az alkalmazás, ha a `filterText` értékét beállítod `"ball"`-nak és frissíted az app-ot? Láthatod, hogy az értékek ennek megfelelően jelennek meg.
131
131
132
132
## Ötödik lépés: Fordított adatáramlás {#step-5-add-inverse-data-flow}
133
133
134
134
<pdata-height="600"data-theme-id="0"data-slug-hash="LzWZvb"data-default-tab="js,result"data-user="rohan10"data-embed-version="2"data-pen-title="Thinking In React: Step 5"class="codepen">Nézd meg a <ahref="https://codepen.io/gaearon/pen/LzWZvb">Thinking In React: Step 5</a>-t a <ahref="https://codepen.io">CodePen</a>en.</p>
135
135
136
-
Van tehát egy alkalmazásunk ami helyesen jeleníti meg az adatokat a `props` és a `state` függvényében lefelé áramoltatva ezeket a hierarchiában. Eljött az ideje, hogy a másik irányba is mozgassunk adatokat. A form komponenseinknek a hierarchia mélyén is tudniuk kell frissíteni a `state`-et a `FilterableProductTable`-ben.
136
+
Van tehát egy alkalmazásunk ami helyesen jeleníti meg az adatokat a props és a state függvényében lefelé áramoltatva ezeket a hierarchiában. Eljött az ideje, hogy a másik irányba is mozgassunk adatokat. A form komponenseinknek a hierarchia mélyén is tudniuk kell frissíteni a state-et a `FilterableProductTable`-ben.
137
137
138
138
Reactben ezt nagyon kifejezően ábrázolhatjuk, ami segíti megérteni a program hogyan is működik, de egy kicsit többet kell hozzá gépelni, mint a hagyományos kétirányú adatkapcsolat esetén.
139
139
140
-
Ha próbáltál szöveget beírni vagy kipipálni a jelölőnégyzetet a mostani verziónkban, akkor már láttad, hogy a React figyelmen kívül hagyja a bemeneteket. Ez szándékos, mivel így lehetséges, hogy a `props`ban kapott érték amit átadunk az `input`nak a `value`-ban mindíg azonos legyen a `state`-ben tárolt értékkel amit a `FilterableProductTable`-ból továbbadunk.
140
+
Ha próbáltál szöveget beírni vagy kipipálni a jelölőnégyzetet a mostani verziónkban, akkor már láttad, hogy a React figyelmen kívül hagyja a bemeneteket. Ez szándékos, mivel így lehetséges, hogy a propsban kapott érték amit átadunk az `input`nak a `value`-ban mindíg azonos legyen a state-ben tárolt értékkel amit a `FilterableProductTable`-ból továbbadunk.
141
141
142
-
Gondoljuk végig mit szeretnénk, mi történjen. Azt akarjuk, hogy bármikor ha a felhasználó megváltoztatja az űrlapot mi frissíthessük a `state`-et, hogy az tükrözze a bemeneten kapott adatot. Mivel a komponensek csak a saját `state`-jüket frissíthetik, a `FilterableProductTable` callback függvényeket ad át a `SearchBar`-nak melyek meghívódnak valahányszor a `state`-et frissíteni kell. Használhatjuk az input mezők `onChange` eseményét, a `FilterableProductTable` által átadott callback-ek meghívhatják annak `setState()` metódusát és alkalmazásunk frissül majd.
142
+
Gondoljuk végig mit szeretnénk, mi történjen. Azt akarjuk, hogy bármikor ha a felhasználó megváltoztatja az űrlapot mi frissíthessük a state-et, hogy az tükrözze a bemeneten kapott adatot. Mivel a komponensek csak a saját state-jüket frissíthetik, a `FilterableProductTable` callback függvényeket ad át a `SearchBar`-nak melyek meghívódnak valahányszor a state-et frissíteni kell. Használhatjuk az input mezők `onChange` eseményét, a `FilterableProductTable` által átadott callback-ek meghívhatják annak `setState()` metódusát és alkalmazásunk frissül majd.
0 commit comments