Skip to content

Commit c674e7c

Browse files
committed
Update after review
1 parent 4e01dec commit c674e7c

File tree

1 file changed

+23
-68
lines changed

1 file changed

+23
-68
lines changed

content/docs/introducing-jsx.md

Lines changed: 23 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -14,40 +14,25 @@ const element = <h1>Witaj, świecie!</h1>;
1414

1515
Nieco zaskakującą może się tutaj wydawać przypisywana wartość, która nie jest ani typowym łańcuchem znaków, ani HTML-em.
1616

17-
Taką składnię nazywamy JSX i jest to rozszerzenie składni JavaScriptu
18-
o możliwość wstawiania znaczników. Zalecamy używanie jej wraz z Reactem do opisywania,
19-
jak powinien wyglądać interfejs graficzny strony.
20-
JSX może przypominać język oparty o szablony, jednakże daje on do dyspozycji
17+
Taką składnię nazywamy JSX i jest to rozszerzenie składni JavaScriptu o możliwość wstawiania znaczników. Zalecamy używanie jej wraz z Reactem do opisywania, jak powinien wyglądać interfejs graficzny strony. JSX może przypominać język oparty o szablony, jednakże daje on do dyspozycji
2118
pełnię możliwości JavaScriptu.
2219

23-
JSX jest tłumaczony jeden do jednego na reactowe "elementy". Sposoby ich
24-
wyświetlania na stronie poznamy w [następnym podrozdziale](/docs/rendering-elements.html).
25-
Poniżej znajdziesz podstawy składni JSX, które pozwolą ci szybko zacząć tworzyć kod.
20+
JSX jest tłumaczony jeden do jednego na reactowe "elementy". Sposoby ich wyświetlania na stronie poznamy w [następnym podrozdziale](/docs/rendering-elements.html). Poniżej znajdziesz podstawy składni JSX, które pozwolą ci szybko zacząć tworzyć kod.
2621

2722

2823
### Dlaczego JSX? {#why-jsx}
2924

30-
React godzi się z faktem, że logika związana z prezentacją danych jest z natury
31-
rzeczy powiązana z innymi elementami logiki biznesowej UI: sposobami przetwarzania
32-
zdarzeń w aplikacji, tym, jak stan aplikacji zmienia się w czasie, jak również tym,
33-
jak dane są przygotowywane do wyświetlenia.
25+
React godzi się z faktem, że logika związana z prezentacją danych jest z natury rzeczy powiązana z innymi elementami logiki biznesowej UI: sposobami przetwarzania zdarzeń w aplikacji, tym, jak stan aplikacji zmienia się w czasie, jak również tym, jak dane są przygotowywane do wyświetlenia.
3426

35-
Zamiast sztucznie rozdzielać *technologie*, umiejscowiając znaczniki oraz logikę
36-
aplikacji w osobnych plikach, React wprowadza [podział odpowiedzialności](https://pl.wikipedia.org/wiki/Zasada_jednej_odpowiedzialno%C5%9Bci)
37-
poprzez wprowadzenie luźno powiązanych jednostek, nazywanych "komponentami", które
38-
zawierają zarówno znaczniki HTML, jak i związaną z nimi logikę.
27+
Zamiast sztucznie rozdzielać *technologie*, umiejscowiając znaczniki oraz logikę aplikacji w osobnych plikach, React wprowadza [podział odpowiedzialności](https://pl.wikipedia.org/wiki/Zasada_jednej_odpowiedzialno%C5%9Bci) poprzez wprowadzenie luźno powiązanych jednostek, nazywanych "komponentami", które zawierają zarówno znaczniki HTML, jak i związaną z nimi logikę.
3928

40-
React [nie wymaga](/docs/react-without-jsx.html) używania JSX, jednakże większość
41-
programistów uważa go za przydatne narzędzie unaoczniające to, co dzieje się w kodzie
42-
javascriptowym operującym na interfejsach graficznych. Pomaga on również Reactowi
43-
wyświetlać bardziej użyteczne informacje o błędach i ostrzeżenia.
29+
React [nie wymaga](/docs/react-without-jsx.html) używania JSX, jednakże większość programistów uważa go za przydatne narzędzie unaoczniające to, co dzieje się w kodzie javascriptowym operującym na interfejsach graficznych. Pomaga on również Reactowi wyświetlać bardziej użyteczne informacje o błędach i ostrzeżenia.
4430

4531
Pora sprawdzić, jak to działa - do dzieła!
4632

4733
### Osadzanie wyrażeń w JSX {#embedding-expressions-in-jsx}
4834

49-
W poniższym przykładzie deklarujemy zmienną `imie`, a następnie używamy jej
50-
wewnątrz JSX, po prostu otaczając ją nawiasami klamrowymi:
35+
W poniższym przykładzie deklarujemy zmienną `imie`, a następnie używamy jej wewnątrz JSX, po prostu otaczając ją nawiasami klamrowymi:
5136

5237
```js{1,2}
5338
const imie = 'Gracjan';
@@ -59,13 +44,9 @@ ReactDOM.render(
5944
);
6045
```
6146

62-
Zauważ, że dowolne [wyrażenie JavaScriptowe (ang.)](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Expressions_and_Operators#Expressions)
63-
możesz osadzić w JSX poprzez otoczenie go klamrami. Przykładowo, możesz użyć
64-
`2 + 2`, `uzytkownik.imie` czy `pokoloruj(uzytkownik)`, jako że są to prawidłowe
65-
wyrażenia w języku JavaScript.
47+
Zauważ, że dowolne [wyrażenie JavaScriptowe (ang.)](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Expressions_and_Operators#Expressions) możesz osadzić w JSX poprzez otoczenie go klamrami. Przykładowo, możesz użyć `2 + 2`, `uzytkownik.imie` czy `pokoloruj(uzytkownik)`, jako że są to prawidłowe wyrażenia w języku JavaScript.
6648

67-
W poniższym przykładzie umiejscawiamy wynik wywołania funkcji javascriptowej
68-
`formatuj(uzytkownik)` wewnątrz znacznika `<h1>`:
49+
W poniższym przykładzie umiejscawiamy wynik wywołania funkcji javascriptowej `formatuj(uzytkownik)` wewnątrz znacznika `<h1>`:
6950

7051

7152
```js{12}
@@ -92,18 +73,13 @@ ReactDOM.render(
9273

9374
[Przetestuj kod na CodePen](codepen://introducing-jsx)
9475

95-
Dla czytelności, podzieliliśmy kod JSX na kilka linii. Nie jest to wprawdzie
96-
wymagane, ale polecamy również otaczanie go w nawiasy. Pozwoli to uniknąć pułapek
97-
związanych z [automatycznym wstawianiem średników (ang.)](http://stackoverflow.com/q/2846283) w JavaScripcie.
76+
Dla czytelności, podzieliliśmy kod JSX na kilka linii. Nie jest to wprawdzie wymagane, ale polecamy również otaczanie go w nawiasy. Pozwoli to uniknąć pułapek związanych z [automatycznym wstawianiem średników (ang.)](http://stackoverflow.com/q/2846283) w JavaScripcie.
9877

9978
### JSX również jest wyrażeniem {#jsx-is-an-expression-too}
10079

101-
Po kompilacji, wyrażenia JSX-owe stają się zwykłymi wywołaniami funkcji w JavaScripcie
102-
i są ewaluowane do obiektów JavaScriptowych.
80+
Po kompilacji, wyrażenia JSX-owe stają się zwykłymi wywołaniami funkcji w JavaScripcie i są ewaluowane do obiektów JavaScriptowych.
10381

104-
Oznacza to, że możesz używać znaczników JSX również wewnątrz instrukcji warunkowych `if`,
105-
pętli `for`, przypisywać je do zmiennych, oczekiwać przekazania jako argumenty
106-
do funkcji, zwracać z funkcji i w wielu innych miejscach.
82+
Oznacza to, że możesz używać znaczników JSX również wewnątrz instrukcji warunkowych `if`, pętli `for`, przypisywać je do zmiennych, oczekiwać przekazania jako argumenty do funkcji, zwracać z funkcji i w wielu innych miejscach.
10783

10884
```js
10985
function pobierzPowitanie(uzytkownik) {
@@ -122,32 +98,25 @@ Możesz przekazać literał znakowy jako atrybut, używając poniższej składni
12298
const element = <div tabIndex="0"></div>;
12399
```
124100

125-
Możesz także przypisać wartość dowolnego wyrażenia javascriptowego do atrybutu, używając nawiasów
126-
klamrowych:
101+
Możesz także przypisać wartość dowolnego wyrażenia javascriptowego do atrybutu, używając nawiasów klamrowych:
127102

128103
```js
129104
const element = <img src={user.avatarUrl}></img>;
130105
```
131106

132-
Nie otaczaj jednak klamr cudzysłowami, gdy chcesz przekazać wartość jakiegoś
133-
wyrażenia do atrybutu. Zalecamy użycie albo cudzysłowów (dla statycznych ciągów
134-
znaków), albo klamr (dla wartości wyrażeń), ale nie obydwu naraz (dla tego samego
135-
atrybutu).
107+
Nie otaczaj jednak klamr cudzysłowami, gdy chcesz przekazać wartość jakiegoś wyrażenia do atrybutu. Zalecamy użycie albo cudzysłowów (dla statycznych ciągów znaków), albo klamr (dla wartości wyrażeń), ale nie obydwu naraz (dla tego samego atrybutu).
136108

137109

138110
>**Uwaga:**
139111
>
140-
> Jako że składni JSX jest bliżej do JavaScriptu niż do HTML-a, React DOM używa do nazywania
141-
> argumentów notacji `camelCase` zamiast nazw atrybutów HTML-owych.
142-
>
143-
> Przykładowo, w JSX `class` staje się [`className`](https://developer.mozilla.org/pl/docs/Web/API/Element/className),
144-
> zaś zamiast `tabindex` używamy `tabIndex`.
112+
> Jako że składni JSX jest bliżej do JavaScriptu niż do HTML-a, React DOM używa do nazywania argumentów notacji `camelCase` zamiast nazw atrybutów HTML-owych.
145113
>
114+
> Przykładowo, w JSX `class` staje się [`className`](https://developer.mozilla.org/pl/docs/Web/API/Element/className), zaś zamiast `tabindex` używamy `tabIndex`.
115+
146116

147117
### Specyfikowanie elementów potomnych w JSX {#specifying-children-with-jsx}
148118

149-
Jeśli znacznik jest pusty, możesz zakończyć go bezpośrednio przy pomocy `/>`,
150-
podobnie jak ma to miejsce w XML-u:
119+
Jeśli znacznik jest pusty, możesz zakończyć go bezpośrednio przy pomocy `/>`, podobnie jak ma to miejsce w XML-u:
151120

152121
```js
153122
const element = <img src={user.avatarUrl} />;
@@ -174,18 +143,12 @@ const tytul = response.potentiallyMaliciousInput;
174143
const element = <h1>{tytul}</h1>;
175144
```
176145

177-
Domyślnie, React DOM stosuje [znaki ucieczki](https://pl.wikipedia.org/wiki/Znak_modyfikacji)
178-
w wartościach używanych w JSX, zanim je wyświetli. W ten sposób upewniamy się,
179-
że nic, co nie zostało bezpośrednio napisane w kodzie twojej aplikacji, nie zostanie
180-
wstrzyknięte w kod strony. Wszystko, co wyświetlamy, zamieniane jest na statyczne
181-
łańcuchy znaków. Pozwala to uniknąć ataków typu [XSS (Cross-site scripting)](https://pl.wikipedia.org/wiki/Cross-site_scripting).
146+
Domyślnie, React DOM stosuje [znaki ucieczki](https://pl.wikipedia.org/wiki/Znak_modyfikacji) w wartościach używanych w JSX, zanim je wyświetli. W ten sposób upewniamy się, że nic, co nie zostało bezpośrednio napisane w kodzie twojej aplikacji, nie zostanie wstrzyknięte w kod strony. Wszystko, co wyświetlamy, zamieniane jest na statyczne łańcuchy znaków. Pozwala to uniknąć ataków typu [XSS (Cross-site scripting)](https://pl.wikipedia.org/wiki/Cross-site_scripting).
182147

183148

184149
### JSX reprezentuje obiekty {#jsx-represents-objects}
185150

186-
Zanim twój kod JSX będzie mógł zostać wyświetlony w przeglądarce, musi zostać
187-
odpowiednio przetworzony przez narzędzie takie jak _Babel_. Babel transpiluje
188-
znaczniki JSX do wywołań funkcji `React.createElement`.
151+
Zanim twój kod JSX będzie mógł zostać wyświetlony w przeglądarce, musi zostać odpowiednio przetworzony przez narzędzie takie jak _Babel_. Babel transpiluje znaczniki JSX do wywołań funkcji `React.createElement`.
189152

190153
Poniższe dwa fragmenty kodu są sobie równoważne:
191154

@@ -205,9 +168,7 @@ const element = React.createElement(
205168
);
206169
```
207170

208-
Funkcja `React.createElement` wykonuje kilka sprawdzeń, które ułatwiają pisanie
209-
kodu wolnego od błędów. W swej istocie jednak, zwraca ona po prostu obiekt
210-
podobny do poniższego:
171+
Funkcja `React.createElement` wykonuje kilka sprawdzeń, które ułatwiają pisanie kodu wolnego od błędów. W swej istocie jednak, zwraca ona po prostu obiekt podobny do poniższego:
211172

212173
```js
213174
// Note: this structure is simplified
@@ -220,17 +181,11 @@ const element = {
220181
};
221182
```
222183

223-
Takie obiekty nazywamy "_elementami reactowymi_". Możesz o nich myśleć jak o sposobie
224-
opisania tego, co chcesz zobaczyć na ekranie. `ReactDOM` odczytuje te obiekty
225-
i używa ich do skonstruowania drzewa DOM twojej strony, jak również do późniejszego
226-
odświeżania go.
184+
Takie obiekty nazywamy "_elementami reactowymi_". Możesz o nich myśleć jak o sposobie opisania tego, co chcesz zobaczyć na ekranie. `ReactDOM` odczytuje te obiekty i używa ich do skonstruowania drzewa DOM twojej strony, jak również do późniejszego odświeżania go.
227185

228186
Więcej o wyświetlaniu elementów reactowych dowiesz się w następnym rozdziale.
229187

230188
>**Wskazówka:**
231189
>
232-
> Polecamy używanie ["Babela" jako definicji języka (ang.)](http://babeljs.io/docs/editors)
233-
> w twoim ulubionym edytorze. Pozwoli to na poprawne podświetlanie składni ES6 i JSX.
234-
> Niniejsza strona używa schematu kolorów [Oceanic Next](https://labs.voronianski.com/oceanic-next-color-scheme/),
235-
> który jest z nią kompatybilny.
236-
>
190+
> Polecamy używanie ["Babela" jako definicji języka (ang.)](http://babeljs.io/docs/editors) w twoim ulubionym edytorze. Pozwoli to na poprawne podświetlanie składni ES6 i JSX. Niniejsza strona używa schematu kolorów [Oceanic Next](https://labs.voronianski.com/oceanic-next-color-scheme/), który jest z nią kompatybilny.
191+

0 commit comments

Comments
 (0)