Skip to content

Commit 38548de

Browse files
marcinostrouchjakubdrozdek
authored andcommitted
Translate 'Conditional rendering' page (#59)
1 parent ced3ed5 commit 38548de

File tree

2 files changed

+26
-36
lines changed

2 files changed

+26
-36
lines changed

content/docs/conditional-rendering.md

Lines changed: 21 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,9 @@ redirect_from:
88
- "tips/false-in-jsx.html"
99
---
1010

11-
React umożliwia tworzenie odrębnych komponentów, które hermetyzują (ang. *encapsulate*) pożądane przez ciebie metody. Następnie zrenderowane mogą być wybrane komponenty, w zależności od stanu twojej aplikacji.
11+
React umożliwia tworzenie odrębnych komponentów, które hermetyzują (ang. *encapsulate*) pożądane przez ciebie metody. Wybrane komponenty mogą być renderowane bądź nie, w zależności od stanu twojej aplikacji.
1212

13-
Renderowanie warunkowe działa w Reakcie tak samo jak warunki JavaScriptowe. Aby stworzyć elementy odzwierciedlające aktualny stan aplikacji, należy użyć operatora takiego jak [if](https://developer.mozilla.org/pl/docs/Learn/Getting_started_with_the_web/JavaScript_basics#Warunki) lub [operatora warunkowego](https://developer.mozilla.org/pl/docs/Web/JavaScript/Referencje/Operatory/Operator_warunkowy) oraz pozwolić Reactowi je dopasować poprzez aktualizację interfejsu użytkownika.
13+
Renderowanie warunkowe działa w Reakcie tak samo, jak instrukcje warunkowe w javascripcie. Aby stworzyć elementy odzwierciedlające aktualny stan aplikacji, należy użyć instrukcji [if](https://developer.mozilla.org/pl/docs/Learn/Getting_started_with_the_web/JavaScript_basics#Warunki) lub [operatora warunkowego](https://developer.mozilla.org/pl/docs/Web/JavaScript/Referencje/Operatory/Operator_warunkowy) oraz pozwolić Reactowi je dopasować poprzez aktualizację interfejsu użytkownika.
1414

1515
Rozważmy następujące dwa komponenty:
1616

@@ -20,11 +20,11 @@ function UserGreeting(props) {
2020
}
2121

2222
function GuestGreeting(props) {
23-
return <h1>Proszę się zapisać.</h1>;
23+
return <h1>Proszę się zarejestrować.</h1>;
2424
}
2525
```
2626

27-
Stworzymy komponent `Greeting` (ang. *Powitanie*), który wyświetlał będzie jeden lub drugi z powyższych komponentów w zależności od tego czy użytkownik jest zalogowany.
27+
Stworzymy komponent `Greeting` (pol. *Powitanie*), który wyświetlał będzie pierwszy lub drugi z powyższych komponentów w zależności od tego czy użytkownik jest zalogowany.
2828

2929
```javascript{3-7,11,12}
3030
function Greeting(props) {
@@ -36,21 +36,21 @@ function Greeting(props) {
3636
}
3737
3838
ReactDOM.render(
39-
// Try changing to isLoggedIn={true}:
39+
// Spróbuj zmienić na isLoggedIn={true}:
4040
<Greeting isLoggedIn={false} />,
4141
document.getElementById('root')
4242
);
4343
```
4444

4545
[**Przetestuj kod na CodePen**](https://codepen.io/gaearon/pen/ZpVxNq?editors=0011)
4646

47-
Powitanie renderowane przez kod w powyższym przykładzie zależy of wartości właściwości `isLoggedIn`.
47+
Powitanie renderowane przez kod w powyższym przykładzie zależy od wartości właściwości `isLoggedIn`.
4848

4949
### Zmienne elementowe {#element-variables}
5050

51-
Elementy mogą być przechowywane w zmiennych. Pozwala to na warunkowe renderowanie określonej części, komponentu podczas gdy pozostałe dane wyjściowe nie ulegają zmianie.
51+
Elementy mogą być przechowywane w zmiennych. Pozwala to na warunkowe renderowanie określonej części komponentu, podczas gdy pozostałe dane wyjściowe nie ulegają zmianie.
5252

53-
Przyjrzyjmy się dwóm nowym komponentom tworzącym przyciski logowania Zaloguj się (ang. *Login*) oraz Wyloguj się (ang. *Logout*):
53+
Przyjrzyjmy się dwóm nowym komponentom tworzącym przyciski logowania "Zaloguj się" (ang. *Login*) oraz "Wyloguj się" (ang. *Logout*):
5454

5555
```js
5656
function LoginButton(props) {
@@ -72,8 +72,7 @@ function LogoutButton(props) {
7272

7373
W przykładzie poniżej zbudujemy [komponent ze stanem](/docs/state-and-lifecycle.html#adding-local-state-to-a-class) o nazwie `LoginControl` (pol. *kontrola logowania*)
7474

75-
W zależności od aktualnego stanu będzie on renderował przycisk logowania (`<LoginButton />`) lub wylogowania `<LogoutButton />` . Będzie on również renderował komponent `<Greeting />` z poprzedniego przykładu:
76-
75+
W zależności od aktualnego stanu, będzie on renderował przycisk logowania (`<LoginButton />`) lub wylogowania `<LogoutButton />` . Będzie on również renderował komponent `<Greeting />` z poprzedniego przykładu:
7776

7877
```javascript{20-25,29,30}
7978
class LoginControl extends React.Component {
@@ -119,12 +118,11 @@ ReactDOM.render(
119118

120119
[**Przetestuj kod na CodePen**](https://codepen.io/gaearon/pen/QKzAgB?editors=0010)
121120

122-
Deklarowanie zmiennej oraz stosowanie warunku `if` to dobry sposób na warunkowe renderowanie komponentu. Czasem jednak przydaje się nieco krótsza składnia. JSX umożliwia kilka różnych opcji warunków wewnątrz liniowych. Przedstawiamy je poniżej.
123-
121+
Deklarowanie zmiennej oraz stosowanie instrukcji `if` to dobry sposób na warunkowe renderowanie komponentu. Czasem jednak przydaje się nieco krótsza składnia. JSX umożliwia kilka różnych opcji warunków wewnątrzliniowych. Przedstawiamy je poniżej.
124122

125-
### Wewnątrz liniowy warunek `if` z użyciem logicznego operatora `&&` {#inline-if-with-logical--operator}
123+
### Wewnątrzliniowy warunek `if` z użyciem logicznego operatora `&&` {#inline-if-with-logical--operator}
126124

127-
JSX umożliwia stosowanie w nawiasach klamrowych [wszelkich wyrażeń](/docs/introducing-jsx.html#embedding-expressions-in-jsx), łącznie z JavaScriptowym operatorem logicznym `&&`. Jest to przydatne do warunkowego załączania elementu.
125+
JSX umożliwia stosowanie w nawiasach klamrowych [wszelkich wyrażeń](/docs/introducing-jsx.html#embedding-expressions-in-jsx), łącznie z javascriptowym operatorem logicznym `&&`. Jest to przydatne, gdy chcemy jakiś element dołączyć warunkowo.
128126

129127
```js{6-10}
130128
function Mailbox(props) {
@@ -150,15 +148,15 @@ ReactDOM.render(
150148

151149
[**Przetestuj kod na CodePen**](https://codepen.io/gaearon/pen/ozJddz?editors=0010)
152150

153-
Powyższy kod działa ponieważ w JavaScripcie `true && wyrażenie` zawsze jest ewaluowane jako `wyrażenie`, natomiast `false && wyrażenie` jako `false`.
151+
Powyższy kod działa, ponieważ w JavaScripcie `true && *wyrażenie*` zawsze jest ewaluowane jako `wyrażenie`, natomiast `false && wyrażenie` jako `false`.
154152

155-
Zatem jeśli warunek jest `true`, element następujący bezpośrednio po `&&` zostanie ukazany w danych wyjściowych. Natomiast jeśli warunek jest `fałszywy`, React zignoruje go i pominie przy renderowaniu.
153+
Zatem jeśli warunek zwraca `true`, element następujący bezpośrednio po operatorze `&&` zostanie uwzględniony w danych wyjściowych. Natomiast jeśli warunek zwróci `false`, React zignoruje go i pominie przy renderowaniu.
156154

157-
### Warunek if-else z operatorem warunkowym {#inline-if-else-with-conditional-operator}
155+
### Skrócona forma `if-else` z operatorem warunkowym {#inline-if-else-with-conditional-operator}
158156

159-
Kolejną metodą renderowania warunkowego wewnątrz liniowego jest stosowanie JavaScriptowego operatora warunkowego [`warunek ? true : false`](https://developer.mozilla.org/pl/docs/Web/JavaScript/Referencje/Operatory/Operator_warunkowy).
157+
Kolejną metodą renderowania warunkowego wewnątrz wyrażenia jest stosowanie javascriptowego operatora warunkowego [`warunek ? true : false`](https://developer.mozilla.org/pl/docs/Web/JavaScript/Referencje/Operatory/Operator_warunkowy).
160158

161-
W przykładzie poniżej używamy go, aby warunkowo zrenderować mały blok tekstu.
159+
W przykładzie poniżej używamy go, aby warunkowo wyrenderować niewielki blok tekstu.
162160

163161
```javascript{5}
164162
render() {
@@ -187,16 +185,14 @@ render() {
187185
);
188186
}
189187
```
190-
Czytelność takich wyrażeń jest oczywiście nieco mniejsza. Podobnie jak w JavaScripcie, wybór odpowiedniego stylu zależy od preferencji twoich i twojego zespołu. Jednocześnie należy pamiętać, że kiedy warunki stają się nazbyt złożone, dobrze jest roważyć możliwość [stworzenia osobnego komponentu](/docs/components-and-props.html#extracting-components)
191188

189+
Czytelność takich wyrażeń jest oczywiście nieco mniejsza. Podobnie jak w JavaScripcie, wybór odpowiedniego stylu zależy od preferencji twoich i twojego zespołu. Jednocześnie należy pamiętać, że kiedy warunki stają się nazbyt złożone, dobrze jest rozważyć możliwość [wydzielenia osobnego komponentu](/docs/components-and-props.html#extracting-components)
192190

193191
### Zapobieganie renderowaniu komponentu {#preventing-component-from-rendering}
194192

195-
W sporadycznych przypadkach, może zachodzić potrzeba ukrycia się komponentu mimo, iż został on zrenderowany przez inny komponent. Aby to umożliwić należy zastosować wartość `null` zamiast jego renderowanych danych wyjściowych.
196-
197-
198-
W przykładzie poniżej, renderowanie baneru ostrzegawczego `<WarningBanner />` jest uzależnione od wartości właściwości o nazwie `warn` (ang. *ostrzeż*). Jeśli wartość tej właściwości jest `false`, wówczas komponent ten nie jest renderowany.
193+
W sporadycznych przypadkach może zachodzić potrzeba ukrycia się komponentu, mimo iż został on już wyrenderowany przez inny komponent. Aby to umożliwić, należy zwrócić zamiast niego wartość `null`.
199194

195+
W przykładzie poniżej, renderowanie baneru ostrzegawczego `<WarningBanner />` jest uzależnione od wartości właściwości o nazwie `warn` (pol. *ostrzeż*). Jeśli jest ona równa `false`, wówczas komponent ten nie jest renderowany.
200196

201197
```javascript{2-4,29}
202198
function WarningBanner(props) {
@@ -244,4 +240,4 @@ ReactDOM.render(
244240

245241
[**Przetestuj kod na CodePen**](https://codepen.io/gaearon/pen/Xjoqwm?editors=0010)
246242

247-
Zwrócenie wartości `null` z metody `render` danego komponentu nie ma wpływu na wywoływanie metod cyklu życia tego komponentu. To znaczy, że np. metoda `componentDidUpdate` w dalszym ciągu zostanie wywołana.
243+
Zwrócenie wartości `null` w metodzie `render` danego komponentu nie ma wpływu na wywoływanie metod cyklu życia tego komponentu. To znaczy, że np. metoda `componentDidUpdate` w dalszym ciągu zostanie wywołana.

content/docs/forms.md

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -55,11 +55,7 @@ class NameForm extends React.Component {
5555
<form onSubmit={this.handleSubmit}>
5656
<label>
5757
Imię:
58-
<input
59-
type="text"
60-
value={this.state.value}
61-
onChange={this.handleChange}
62-
/>
58+
<input type="text" value={this.state.value} onChange={this.handleChange} />
6359
</label>
6460
<input type="submit" value="Wyślij" />
6561
</form>
@@ -80,7 +76,7 @@ handleChange(event) {
8076
}
8177
```
8278

83-
## Znacznik *textarea* {#the-textarea-tag}
79+
## Znacznik `textarea` {#the-textarea-tag}
8480

8581
W HTML-u element `<textarea>` definiuje swój tekst poprzez elementy potomne:
8682

@@ -241,8 +237,7 @@ class Reservation extends React.Component {
241237
name="wybieraSie"
242238
type="checkbox"
243239
checked={this.state.wybieraSie}
244-
onChange={this.handleInputChange}
245-
/>
240+
onChange={this.handleInputChange} />
246241
</label>
247242
<br />
248243
<label>
@@ -251,8 +246,7 @@ class Reservation extends React.Component {
251246
name="liczbaGosci"
252247
type="number"
253248
value={this.state.liczbaGosci}
254-
onChange={this.handleInputChange}
255-
/>
249+
onChange={this.handleInputChange} />
256250
</label>
257251
</form>
258252
);
@@ -300,4 +294,4 @@ Stosowanie kontrolowanych komponentów może być niekiedy uciążliwe, poniewa
300294

301295
## Rozwiązania całościowe {#fully-fledged-solutions}
302296

303-
Jeśli szukasz rozwiązania kompleksowego umożliwiającego walidację, śledzenie odwiedzonych pól oraz obsługę wysyłania danych, często wybieraną opcją jest [biblioteka Formik](https://jaredpalmer.com/formik). Rozwiązanie to bazuje jednak na tych samych zasadach co komponenty kontrolowane i zarządzanie stanem. Dlatego bardzo ważne jest, abyś przyswoił sobie te zasady.
297+
Jeśli szukasz rozwiązania kompleksowego umożliwiającego walidację, śledzenie odwiedzonych pól oraz obsługę wysyłania danych, często wybieraną opcją jest [biblioteka Formik](https://jaredpalmer.com/formik). Rozwiązanie to bazuje jednak na tych samych zasadach co komponenty kontrolowane i zarządzanie stanem. Dlatego bardzo ważne jest, abyś przyswoił sobie te zasady.

0 commit comments

Comments
 (0)