Skip to content

Commit c5a4936

Browse files
committed
New PR for introducing-jsx (previous translation included)
1 parent 72ddf8c commit c5a4936

File tree

1 file changed

+115
-63
lines changed

1 file changed

+115
-63
lines changed

content/docs/introducing-jsx.md

Lines changed: 115 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -1,64 +1,86 @@
11
---
22
id: introducing-jsx
3-
title: Introducing JSX
3+
title: Wprowadzenie do JSX
44
permalink: docs/introducing-jsx.html
55
prev: hello-world.html
66
next: rendering-elements.html
77
---
88

9-
Consider this variable declaration:
9+
Weźmy na warsztat poniższą instrukcję przypisania:
1010

1111
```js
12-
const element = <h1>Hello, world!</h1>;
12+
const element = <h1>Witaj, świecie!</h1>;
1313
```
1414

15-
This funny tag syntax is neither a string nor HTML.
15+
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-
It is called JSX, and it is a syntax extension to JavaScript. We recommend using it with React to describe what the UI should look like. JSX may remind you of a template language, but it comes with the full power of JavaScript.
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
21+
pełnię możliwości JavaScriptu.
1822

19-
JSX produces React "elements". We will explore rendering them to the DOM in the [next section](/docs/rendering-elements.html). Below, you can find the basics of JSX necessary to get you started.
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.
2026

21-
### Why JSX? {#why-jsx}
2227

23-
React embraces the fact that rendering logic is inherently coupled with other UI logic: how events are handled, how the state changes over time, and how the data is prepared for display.
28+
### Dlaczego JSX? {#why-jsx}
2429

25-
Instead of artificially separating *technologies* by putting markup and logic in separate files, React [separates *concerns*](https://en.wikipedia.org/wiki/Separation_of_concerns) with loosely coupled units called "components" that contain both. We will come back to components in a [further section](/docs/components-and-props.html), but if you're not yet comfortable putting markup in JS, [this talk](https://www.youtube.com/watch?v=x7cQ3mrcKaY) might convince you otherwise.
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.
2634

27-
React [doesn't require](/docs/react-without-jsx.html) using JSX, but most people find it helpful as a visual aid when working with UI inside the JavaScript code. It also allows React to show more useful error and warning messages.
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ę.
2839

29-
With that out of the way, let's get started!
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.
3044

31-
### Embedding Expressions in JSX {#embedding-expressions-in-jsx}
45+
Pora sprawdzić, jak to działa - do dzieła!
3246

33-
In the example below, we declare a variable called `name` and then use it inside JSX by wrapping it in curly braces:
47+
### Osadzanie wyrażeń w JSX {#embedding-expressions-in-jsx}
48+
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:
3451

3552
```js{1,2}
36-
const name = 'Josh Perez';
37-
const element = <h1>Hello, {name}</h1>;
53+
const imie = 'Gracjan';
54+
const element = <h1>Witaj, {imie}</h1>;
3855
3956
ReactDOM.render(
4057
element,
4158
document.getElementById('root')
4259
);
4360
```
4461

45-
You can put any valid [JavaScript expression](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Expressions_and_Operators#Expressions) inside the curly braces in JSX. For example, `2 + 2`, `user.firstName`, or `formatName(user)` are all valid JavaScript expressions.
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.
66+
67+
W poniższym przykładzie umiejscawiamy wynik wywołania funkcji javascriptowej
68+
`formatuj(uzytkownik)` wewnątrz znacznika `<h1>`:
4669

47-
In the example below, we embed the result of calling a JavaScript function, `formatName(user)`, into an `<h1>` element.
4870

4971
```js{12}
50-
function formatName(user) {
51-
return user.firstName + ' ' + user.lastName;
72+
function formatuj(uzytkownik) {
73+
return uzytkownik.imie + ' ' + uzytkownik.nazwisko;
5274
}
5375
54-
const user = {
55-
firstName: 'Harper',
56-
lastName: 'Perez'
76+
const uzytkownik = {
77+
imie: 'Gracjan',
78+
nazwisko: 'Brzęczyszczykiewicz',
5779
};
5880
5981
const element = (
6082
<h1>
61-
Hello, {formatName(user)}!
83+
Witaj, {formatuj(uzytkownik)}!
6284
</h1>
6385
);
6486
@@ -70,115 +92,145 @@ ReactDOM.render(
7092

7193
[](codepen://introducing-jsx)
7294

73-
We split JSX over multiple lines for readability. While it isn't required, when doing this, we also recommend wrapping it in parentheses to avoid the pitfalls of [automatic semicolon insertion](https://stackoverflow.com/q/2846283).
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.
7498

75-
### JSX is an Expression Too {#jsx-is-an-expression-too}
99+
### JSX również jest wyrażeniem {#jsx-is-an-expression-too}
76100

77-
After compilation, JSX expressions become regular JavaScript function calls and evaluate to JavaScript objects.
101+
Po kompilacji, wyrażenia JSX-owe stają się zwykłymi wywołaniami funkcji w JavaScripcie
102+
i są ewaluowane do obiektów JavaScriptowych.
78103

79-
This means that you can use JSX inside of `if` statements and `for` loops, assign it to variables, accept it as arguments, and return it from functions:
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.
80107

81-
```js{3,5}
82-
function getGreeting(user) {
83-
if (user) {
84-
return <h1>Hello, {formatName(user)}!</h1>;
108+
```js
109+
function pobierzPowitanie(uzytkownik) {
110+
if (uzytkownik) {
111+
return <h1>Witaj, {formatuj(uzytkownik)}!</h1>;
85112
}
86-
return <h1>Hello, Stranger.</h1>;
113+
return <h1>Witaj, nieznajomy.</h1>;
87114
}
88115
```
89116

90-
### Specifying Attributes with JSX {#specifying-attributes-with-jsx}
117+
### Podawanie atrybutów w JSX {#specifying-attributes-with-jsx}
91118

92-
You may use quotes to specify string literals as attributes:
119+
Możesz przekazać literał znakowy jako atrybut, używając poniższej składni:
93120

94121
```js
95122
const element = <div tabIndex="0"></div>;
96123
```
97124

98-
You may also use curly braces to embed a JavaScript expression in an attribute:
125+
Możesz także przypisać wartość dowolnego wyrażenia javascriptowego do atrybutu, używając nawiasów
126+
klamrowych:
99127

100128
```js
101129
const element = <img src={user.avatarUrl}></img>;
102130
```
103131

104-
Don't put quotes around curly braces when embedding a JavaScript expression in an attribute. You should either use quotes (for string values) or curly braces (for expressions), but not both in the same attribute.
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).
136+
105137

106-
>**Warning:**
138+
>**Uwaga:**
107139
>
108-
>Since JSX is closer to JavaScript than to HTML, React DOM uses `camelCase` property naming convention instead of HTML attribute names.
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`.
109145
>
110-
>For example, `class` becomes [`className`](https://developer.mozilla.org/en-US/docs/Web/API/Element/className) in JSX, and `tabindex` becomes [`tabIndex`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/tabIndex).
111146
112-
### Specifying Children with JSX {#specifying-children-with-jsx}
147+
### Specyfikowanie elementów potomnych w JSX {#specifying-children-with-jsx}
113148

114-
If a tag is empty, you may close it immediately with `/>`, like XML:
149+
Jeśli znacznik jest pusty, możesz zakończyć go bezpośrednio przy pomocy `/>`,
150+
podobnie jak ma to miejsce w XML-u:
115151

116152
```js
117153
const element = <img src={user.avatarUrl} />;
118154
```
119155

120-
JSX tags may contain children:
156+
Znaczniki JSX mogą jednak również zawierać elementy potomne:
121157

122158
```js
123159
const element = (
124160
<div>
125-
<h1>Hello!</h1>
126-
<h2>Good to see you here.</h2>
161+
<h1>Witaj!</h1>
162+
<h2>Ddobrze cię widzieć.</h2>
127163
</div>
128164
);
129165
```
130166

131-
### JSX Prevents Injection Attacks {#jsx-prevents-injection-attacks}
167+
### JSX jest odporny na ataki przez wstrzyknięcie kodu {#jsx-prevents-injection-attacks}
132168

133-
It is safe to embed user input in JSX:
169+
W JSX można bezpiecznie osadzać dane wprowadzone przez użytkownika:
134170

135171
```js
136-
const title = response.potentiallyMaliciousInput;
172+
const tytul = response.potentiallyMaliciousInput;
137173
// This is safe:
138-
const element = <h1>{title}</h1>;
174+
const element = <h1>{tytul}</h1>;
139175
```
140176

141-
By default, React DOM [escapes](https://stackoverflow.com/questions/7381974/which-characters-need-to-be-escaped-on-html) any values embedded in JSX before rendering them. Thus it ensures that you can never inject anything that's not explicitly written in your application. Everything is converted to a string before being rendered. This helps prevent [XSS (cross-site-scripting)](https://en.wikipedia.org/wiki/Cross-site_scripting) attacks.
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).
182+
142183

143-
### JSX Represents Objects {#jsx-represents-objects}
184+
### JSX reprezentuje obiekty {#jsx-represents-objects}
144185

145-
Babel compiles JSX down to `React.createElement()` calls.
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`.
146189

147-
These two examples are identical:
190+
Poniższe dwa fragmenty kodu są sobie równoważne:
148191

149192
```js
150193
const element = (
151-
<h1 className="greeting">
152-
Hello, world!
194+
<h1 className="powitanie">
195+
Witaj, świecie!
153196
</h1>
154197
);
155198
```
156199

157200
```js
158201
const element = React.createElement(
159202
'h1',
160-
{className: 'greeting'},
161-
'Hello, world!'
203+
{className: 'powitanie'},
204+
'Witaj, świecie!'
162205
);
163206
```
164207

165-
`React.createElement()` performs a few checks to help you write bug-free code but essentially it creates an object like this:
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:
166211

167212
```js
168213
// Note: this structure is simplified
169214
const element = {
170215
type: 'h1',
171216
props: {
172-
className: 'greeting',
173-
children: 'Hello, world!'
217+
className: 'powitanie',
218+
children: 'Witaj, swiecie'
174219
}
175220
};
176221
```
177222

178-
These objects are called "React elements". You can think of them as descriptions of what you want to see on the screen. React reads these objects and uses them to construct the DOM and keep it up to date.
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.
179227

180-
We will explore rendering React elements to the DOM in the next section.
228+
Więcej o wyświetlaniu elementów reactowych dowiesz się w następnym rozdziale.
181229

182-
>**Tip:**
230+
>**Wskazówka:**
231+
>
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.
183236
>
184-
>We recommend using the ["Babel" language definition](https://babeljs.io/docs/editors) for your editor of choice so that both ES6 and JSX code is properly highlighted. This website uses the [Oceanic Next](https://labs.voronianski.com/oceanic-next-color-scheme/) color scheme which is compatible with it.

0 commit comments

Comments
 (0)