Skip to content

Commit 6d519ab

Browse files
authored
Apply suggestions from code review (from Copilot)
1 parent f6ccc46 commit 6d519ab

File tree

1 file changed

+33
-33
lines changed

1 file changed

+33
-33
lines changed

src/content/learn/responding-to-events.md

Lines changed: 33 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ title: Obsługa zdarzeń
44

55
<Intro>
66

7-
React pozwala nam dodać *procedury obsługi zdarzeń* (ang. _event handlers_) do naszego JSXa. Procedury obsługi zdarzeń to twoje własne funkcje, które zostaną wywołane w odpowiedzi na interakcje tj. klikanie, najeżdżanie, wybieranie pól tekstowych itp.
7+
React pozwala nam dodać *procedury obsługi zdarzeń* (ang. _event handlers_) do naszego JSX-a. Procedury obsługi zdarzeń to twoje własne funkcje, które zostaną wywołane w odpowiedzi na interakcje takie jak klikanie, najeżdżanie kursorem, zaznaczanie pól tekstowych itp.
88

99
</Intro>
1010

@@ -18,7 +18,7 @@ React pozwala nam dodać *procedury obsługi zdarzeń* (ang. _event handlers_) d
1818

1919
## Dodawanie procedur obsługi zdarzeń {/*adding-event-handlers*/}
2020

21-
Aby dodać procedurę obsługi zdarzeń, najpierw zdefiniuj funkcję, a następnie [przekaż ją jako właściwość (ang. _prop_)](/learn/passing-props-to-a-component) do odpowiedniego tagu JSX. Na przykład, oto przycisk, który jeszcze nic nie robi:
21+
Aby dodać procedurę obsługi zdarzeń, najpierw zdefiniuj funkcję, a następnie [przekaż ją jako właściwość (ang. _prop_)](/learn/passing-props-to-a-component) do odpowiedniego elementu JSX. Na przykład, oto przycisk, który jeszcze nic nie robi:
2222

2323
<Sandpack>
2424

@@ -34,11 +34,11 @@ export default function Button() {
3434

3535
</Sandpack>
3636

37-
Możesz sprawić, aby pokazywał wiadomość po kliknięciu go przez użytkownika w tych trzech krokach:
37+
Możesz sprawić, by po kliknięciu przez użytkownika przycisk pokazywał wiadomość, wykonując trzy kroki:
3838

39-
1. Zadeklaruj funkcję `handleClick` *wewnątrz* twojego komponentu `Button`.
39+
1. Zadeklaruj funkcję `handleClick` *wewnątrz* swojego komponentu `Button`.
4040
2. Zaimplementuj logikę wewnątrz tej funkcji (użyj `alert` by pokazać wiadomość).
41-
3. Dodaj `onClick={handleClick}` do JSXa `<button>`.
41+
3. Dodaj `onClick={handleClick}` do JSX-a `<button>`.
4242

4343
<Sandpack>
4444

@@ -62,14 +62,14 @@ button { margin-right: 10px; }
6262

6363
</Sandpack>
6464

65-
Zdefiniowana funkcja `handleClick`, która jest potem [przekazana jako właściwość](/learn/passing-props-to-a-component) do `<button>`, jest **procedurą obsługi zdarzeń.** Funkcje taka jak ta:
65+
Zdefiniowana funkcja `handleClick`, która jest potem [przekazana jako właściwość](/learn/passing-props-to-a-component) do `<button>`, jest **procedurą obsługi zdarzeń.** Funkcje takie jak ta:
6666

6767
* Są zwykle definiowane *wewnątrz* komponentów
6868
* Mają nazwy zaczynające się od `handle`, po których następuje nazwa zdarzenia.
6969

7070
Zgodnie z konwencją, nazwy funkcji obsługujących zdarzenia zazwyczaj zaczynają się od `handle`, po którym następuje nazwa zdarzenia. Często zobaczysz składnię taką jak `onClick={handleClick}`, `onMouseEnter={handleMouseEnter}` i podobne.
7171

72-
Oprócz tego, możesz zdefiniować procedurę obsługi zdarzeń w miejscu wywołania w JSX:
72+
Możesz też zdefiniować procedurę obsługi zdarzeń w miejscu wywołania w JSX:
7373

7474
```jsx
7575
<button onClick={function handleClick() {
@@ -85,7 +85,7 @@ Lub zwięźlej, używając funkcji strzałkowej:
8585
}}>
8686
```
8787

88-
Oba style dadzą ten sam rezultat. Ten sposób definiowania jest wygodny dla krótkich funkcji.
88+
Wszystkie te sposoby dadzą ten sam rezultat. Ten sposób definiowania jest wygodny dla krótkich funkcji.
8989

9090
<Pitfall>
9191

@@ -97,16 +97,16 @@ Funkcje przekazywane do procedury obsługi zdarzeń muszą być przekazywane, ni
9797

9898
Różnica jest subtelna. W pierwszym przykładzie funkcja `handleClick` jest przekazywana do procedury `onClick`. To mówi Reactowi, aby ją zapamiętał i wywołał tylko wtedy, gdy użytkownik naciśnie przycisk.
9999

100-
W drugim przykładzie `()` na końcu `handleClick()` *natychmiast* wykonuje funkcję podczas [renderowania](/learn/render-and-commit), bez żadnych kliknięć. Dzieje się tak, ponieważ JavaScript wewnątrz [JSXowych `{` i `}`](/learn/javascript-in-jsx-with-curly-braces) wykonuje się od razu.
100+
W drugim przykładzie `()` na końcu `handleClick()` *natychmiast* wykonuje funkcję podczas [renderowania](/learn/render-and-commit), bez żadnych kliknięć. Dzieje się tak, ponieważ JavaScript wewnątrz [JSX-owych nawiasów `{` i `}`](/learn/javascript-in-jsx-with-curly-braces) wykonuje się od razu.
101101

102102
Gdy piszesz kod w jednej linii, ta sama pułapka czeka na ciebie w innej formie:
103103

104-
| przekazanie funkcji (correct) | wywołanie funkcji (nieprawidłowo) |
104+
| przekazanie funkcji (prawidłowo) | wywołanie funkcji (nieprawidłowo) |
105105
| --------------------------------------- | --------------------------------- |
106106
| `<button onClick={() => alert('...')}>` | `<button onClick={alert('...')}>` |
107107

108108

109-
Przekazywanie kodu w lini, tak jak w poniższym przykładzie, nie uruchomi się na kliknięcie - wywoła się za każdym razem, gdy komponent się wyrenderuje:
109+
Przekazywanie kodu w linii, tak jak w poniższym przykładzie, nie uruchomi się na kliknięcie - wywoła się za każdym razem, gdy komponent się wyrenderuje:
110110

111111
```jsx
112112
// Ten alert wyskoczy, gdy komponent się renderuje, a nie gdy został naciśnięty!
@@ -132,7 +132,7 @@ W obu przypadkach to co chcesz przekazać, jest funkcją:
132132

133133
### Odczytywanie właściwości w procedurach obsługi zdarzeń {/*reading-props-in-event-handlers*/}
134134

135-
Ponieważ procedury są deklarowane wewnątrz komponentu, mają dostęp do jego właściwości. Oto przycisk, który po kliknięciu pokaże alert z właściwością `message`:
135+
Ponieważ procedury obsługi zdarzeń są deklarowane wewnątrz komponentu, mają dostęp do jego właściwości. Oto przycisk, który po kliknięciu pokaże alert z właściwością `message`:
136136

137137
<Sandpack>
138138

@@ -169,7 +169,7 @@ To pozwala tym dwóm przyciskom pokazywać różne wiadomości. Spróbuj je zmie
169169

170170
### Przekazywanie procedur obsługi zdarzeń jako właściwości {/*passing-event-handlers-as-props*/}
171171

172-
Często będziesz chcieć, aby komponent-rodzic zdefiniował dziecku procedurę obsługi zdarzeń. Przyjrzyj się przyciskom: w zależności od tego, gdzie użyjesz komponentu `Button`, możesz chcieć wykonać inną funkcję - być może jeden odtwarza film, a drugi dodaje obrazek?
172+
Często będziesz chcieć, aby komponent nadrzędny zdefiniował dziecku procedurę obsługi zdarzeń. Przyjrzyj się przyciskom: w zależności od tego, gdzie użyjesz komponentu `Button`, możesz chcieć wykonać inną funkcję - być może jeden odtwarza film, a drugi dodaje obrazek?
173173

174174
Aby to zrobić, przekaż właściwość, którą komponent otrzymał od rodzica, jako procedura obsługi w taki sposób:
175175

@@ -227,13 +227,13 @@ Tutaj komponent `Toolbar` renderuje `PlayButton` i `UploadButton`:
227227

228228
W końcu twój komponent `Button` akceptuje właściwość zwaną `onClick`. Przekazuje ją bezpośrednio do wbudowanego w przeglądarkę `<button>` z `onClick={onClick}`. Ten wycinek mówi Reactowi, aby wywołał ją na kliknięcie.
229229

230-
Jeśli używasz [systemów projektu](https://uxdesign.cc/everything-you-need-to-know-about-design-systems-54b109851969), często komponenty, takie jak przyciski, posiadają style, ale nie definiują zachowania. Zamiast tego, komponenty typu `PlayButton` czy `UploadButton` będą przekazywały w dół procedury obsługi zdarzeń.
230+
Jeśli używasz [systemu projektowania (ang. _design system_)](https://uxdesign.cc/everything-you-need-to-know-about-design-systems-54b109851969), często komponenty, takie jak przyciski, posiadają style, ale nie definiują zachowania. Zamiast tego, komponenty typu `PlayButton` czy `UploadButton` będą przekazywały w dół procedury obsługi zdarzeń.
231231

232232
### Nazywanie właściwości procedur obsługi zdarzeń {/*naming-event-handler-props*/}
233233

234-
Komponenty wbudowane tj. `<button>` i `<div>` wspierają jedynie [nazwy zdarzeń przeglądarki](/reference/react-dom/components/common#common-props) jak `onClick`. Jednak, gdy budujesz własne komponenty, możesz nazywać ich właściwości procedur obsługi jakkolwiek chcesz.
234+
Komponenty wbudowane, takie jak `<button>` i `<div>` wspierają jedynie [nazwy zdarzeń przeglądarki](/reference/react-dom/components/common#common-props) jak `onClick`. Jednak, gdy budujesz własne komponenty, możesz nazywać ich właściwości procedur obsługi jakkolwiek chcesz.
235235

236-
Według konwencji, właściwości procedur obsługi zdarzeń powinny zaczynać się od `on` i dużej litery tuż za nim.
236+
Według konwencji, właściwości procedur obsługi zdarzeń powinny zaczynać się od `on` i dużej litery tuż po nim.
237237

238238
Na przykład, właściwość `onClick` komponentu `Button` mogłaby być nazwana `onSmash`:
239239

@@ -268,9 +268,9 @@ button { margin-right: 10px; }
268268

269269
</Sandpack>
270270

271-
W tym przykładzie `<button onClick={onSmash}>` pokazuje, że przeglądarkowy `<button>` (lowercase) nadal potrzebuje właściwości `onClick`, ale jej nazwa otrzymana przez twój własny komponent `Button` może być, jaka chcesz!
271+
W tym przykładzie `<button onClick={onSmash}>` pokazuje, że przeglądarkowy `<button>` (lowercase) nadal potrzebuje właściwości `onClick`, ale jej nazwa otrzymana przez twój własny komponent `Button` może być jaka chcesz!
272272

273-
Gdy twój komponent wspiera wiele interakcji, możesz nazwać właściwości procedur obsługi zdarzeń zgodnie z pojęciami typowymi dla twojej aplikacji. Na przykład, ten komponent `Toolbar` otrzymuje procedury `onPlayMovie` i `onUploadImage`:
273+
Gdy twój komponent wspiera wiele różnych interakcji, możesz nazwać właściwości procedur obsługi zdarzeń zgodnie z pojęciami typowymi dla twojej aplikacji. Na przykład, ten komponent `Toolbar` otrzymuje procedury `onPlayMovie` i `onUploadImage`:
274274

275275
<Sandpack>
276276

@@ -312,7 +312,7 @@ button { margin-right: 10px; }
312312

313313
</Sandpack>
314314

315-
Zwróć uwagę na to, że komponent `App` nie musi wiedzień *co* `Toolbar` zrobi z `onPlayMovie` lub `onUploadImage`. To szczegół w implementacji `Toolbar`. Tutaj, `Toolbar` przekazuje je niżej jako procedury `onClick` do swoich `Button`ów, ale później mogą również zostać wywołane skrótem klawiszowym. Nazywanie właściwości po interakcjach specyficznych dla aplikacji np. `onPlayMovie` pozwala ci wygodnie zmieniać, w jaki sposób będą później użyte.
315+
Zwróć uwagę na to, że komponent `App` nie musi wiedzieć *co* `Toolbar` zrobi z `onPlayMovie` lub `onUploadImage`. To szczegół w implementacji `Toolbar`. Tutaj, `Toolbar` przekazuje je niżej jako procedury `onClick` do swoich komponentów `Button`, ale później mogą również zostać wywołane skrótem klawiszowym. Nazywanie właściwości po interakcjach specyficznych dla aplikacji np. `onPlayMovie` pozwala ci wygodnie zmieniać, w jaki sposób będą później użyte.
316316

317317
<Note>
318318

@@ -322,9 +322,9 @@ Upewnij się, że używasz poprawnego tagu HTML dla swoich procedur obsługi zda
322322

323323
## Propagacja zdarzeń {/*event-propagation*/}
324324

325-
Procedury obsługi zdarzeń wyłapią również zdarzenia z któregokolwiek komponentu potomnego. Mówimy wtedy, że zdarzenie "bąbelkuje" (ang. _bubbles_) lub "propaguje" (ang. _propagates_) w górę drzewa: zaczyna się to tam, gdzie zdarzenie miało miejsce, a potem idzie w górę.
325+
Procedury obsługi zdarzeń wyłapią również zdarzenia pochodzące z dowolnego komponentu potomnego. Mówimy wtedy, że zdarzenie "bąbelkuje" (ang. _bubbles_) lub "propaguje" (ang. _propagates_) w górę drzewa: zaczyna się to tam, gdzie zdarzenie miało miejsce, a potem idzie w górę.
326326

327-
Ten `<div>` zawiera dwa przyciski. Oba elementy `<div>` i każdy przycisk mają swoją własną obsługę `onClick`. Jak myślisz, która z nich zostanie uruchomiona, gdy naciśniesz przycisk?
327+
Ten `<div>` zawiera dwa przyciski. Zarówno element `<div>`, jak i każdy z przycisków mają swoją własną obsługę `onClick`. Jak myślisz, która z nich zostanie uruchomiona, gdy naciśniesz przycisk?
328328

329329
<Sandpack>
330330

@@ -355,7 +355,7 @@ button { margin: 5px; }
355355

356356
</Sandpack>
357357

358-
Naciskając na którykolwiek z przycisków, ich `onClick` uruchomi się jako pierwszy. Następnie wykona się `onClick` z nadrzędnego `<div>`a, zatem pojawią się 2 wiadomości. Jeśli naciśniesz stricte na pasek, jedynie `onClick` `<div>`a zostanie uruchomiony
358+
Naciskając na którykolwiek z przycisków, `onClick` przypisany do nich uruchomi się jako pierwszy. Następnie wykona się `onClick` z nadrzędnego elementu `<div>`, zatem pojawią się dwie wiadomości. Jeśli naciśniesz wprost na pasek, jedynie `onClick` elementu `<div>` zostanie uruchomiony.
359359

360360
<Pitfall>
361361

@@ -365,7 +365,7 @@ W Reakcie przekazywane jest każde zdarzenie poza `onScroll`, które działa tyl
365365

366366
### Powstrzymywanie propagacji {/*stopping-propagation*/}
367367

368-
Procedury obsługi zdarzeń otrzymują jako jedyny argument **obiekt zdarzenia** (ang. _event object_). Zwyczajowo nazywany jest `e`, co pochodzi od angielskiego "event". Możesz go użyć do odczytu informacji o zdarzeniu
368+
Procedury obsługi zdarzeń otrzymują jako jedyny argument **obiekt zdarzenia** (ang. _event object_). Zwyczajowo nazywany jest `e`, co pochodzi od angielskiego "event". Możesz go użyć do odczytu informacji o zdarzeniu.
369369

370370
Poza tym, taki obiekt pozwala zatrzymać propagację. Jeśli chcesz powstrzymać zdarzenie od dotarcia do komponentu nadrzędnego, musisz wywołać `e.stopPropagation()` jak w tym komponencie `Button`:
371371

@@ -413,7 +413,7 @@ Gdy naciskasz przycisk:
413413

414414
1. React wywołuje procedurę `onClick` przekazaną do `<button>`.
415415
2. Ta procedura, zdefiniowana w `Button`, wykonuje następujące czynności:
416-
* Wywołuje `e.stopPropagation()`, powstrzymując obiekt przed przekazaniem dalej.
416+
* Wywołuje `e.stopPropagation()`, powstrzymując zdarzenie przed przekazaniem dalej.
417417
* Wywołuje funkcję `onClick`, która jest właściwością przekazaną z komponentu `Toolbar`.
418418
3. Ta funkcja, zdefiniowana w komponencie `Toolbar`, wyświetla swój własny alert.
419419
4. Ponieważ zatrzymaliśmy przekazanie, procedura `onClick` nadrzędnego elementu `<div>` *nie* uruchamia się.
@@ -439,7 +439,7 @@ Każde zdarzenie jest propagowane w trzech fazach:
439439
2. Uruchamia procedurę `onClick` naciśniętego elementu.
440440
3. Podróżuje w górę, wywołując wszystkie procedury `onClick`.
441441

442-
Przechwytywanie zdarzeń przydaje się przy tworzeniu np. routerów czy analityki, ale prawdopodobnie nie znajdzie dla niego szerszego zastosowania w kodzie aplikacji.
442+
Przechwytywanie zdarzeń przydaje się przy tworzeniu np. routerów czy analityki, ale prawdopodobnie nie znajdziesz dla tego szerszego zastosowania w kodzie aplikacji.
443443

444444
</DeepDive>
445445

@@ -462,11 +462,11 @@ function Button({ onClick, children }) {
462462

463463
Możesz również dodać więcej kodu do tej procedury, przed wywołaniem nadrzędnego `onClick`. Ten wzór pokazuje *alternatywę* dla propagacji. Pozwala ona komponentowi potomnemu zająć się zdarzeniem, podczas gdy ten nadrzędny może określić jakieś dodatkowe zachowanie. W przeciwieństwie do propagacji nie jest to automatyczne, ale plusem tego wzoru jest możliwość prostego podążania za całym ciągiem kodu, który wykonuje się jako wynik jakiegoś zdarzenia
464464

465-
Jeśli używając propagacji jest ci ciężko wyśledzić, które procedury są wykonywane i dlaczego, spróbuj tego podejścia.
465+
Jeśli używając propagacji jest ci ciężko prześledzić, które procedury są wykonywane i dlaczego, spróbuj tego podejścia.
466466

467467
### Powstrzymywanie domyślnego zachowania {/*preventing-default-behavior*/}
468468

469-
Niektóre zdarzenia przeglądarki mają domyślne zachowanie powiązane z nim. Na przykład zdarzenie wysłania formularza, które następuje, gdy naciśnięty zostanie przycisk w jego wnętrzu, domyślnie przeładuje całą stronę:
469+
Niektóre zdarzenia przeglądarki mają domyślne zachowanie powiązane z nimi. Na przykład zdarzenie wysłania formularza, które następuje, gdy naciśnięty zostanie przycisk w jego wnętrzu, domyślnie przeładuje całą stronę:
470470

471471
<Sandpack>
472472

@@ -520,7 +520,7 @@ Nie myl `e.stopPropagation()` i `e.preventDefault()`. Oba są użyteczne, ale ni
520520

521521
Oczywiście! Procedury obsługi zdarzeń to idealne miejsce na efekty uboczne.
522522

523-
W przeciwieństwie do funkcji renderujących, procedury obsługi zdarzeń nie muszą być [czyste](/learn/keeping-components-pure), więc jest to świetne miejsce by coś *zmienić* - na przykład, wartość input'a w odpowiedzi na wpisywanie, lub listę po naciśnięciu przycisku. Jednakże, aby cokolwiek pozmieniać, musisz wpierw jakoś to przechować. W Reakcie używa się do tego [stanu, czyli pamięci komponentu](/learn/state-a-components-memory). Wszystkiego o tym nauczysz się na następnej stronie.
523+
W przeciwieństwie do funkcji renderujących, procedury obsługi zdarzeń nie muszą być [czyste](/learn/keeping-components-pure), więc jest to świetne miejsce by coś *zmienić* - na przykład, wartość pola tekstowego w odpowiedzi na wpisywanie lub listę po naciśnięciu przycisku. Jednakże, aby cokolwiek pozmieniać, musisz wpierw jakoś to przechować. W Reakcie używa się do tego [stanu, czyli pamięci komponentu](/learn/state-a-components-memory). Wszystkiego o tym nauczysz się na następnej stronie.
524524

525525
<Recap>
526526

@@ -569,7 +569,7 @@ export default function LightSwitch() {
569569

570570
<Solution>
571571

572-
Problemem jest to, że `<button onClick={handleClick()}>` _wywołuje_ funkcję `handleClick` zamiast ją _przekazywać_ podczas renderowania. Usunięcie `()`, aby przycisk został w formie `<button onClick={handleClick}>` naprawi bład:
572+
Problem polega na tym, że `<button onClick={handleClick()}>` _wywołuje_ funkcję `handleClick` zamiast ją _przekazywać_ podczas renderowania. Usunięcie `()`, aby przycisk został w formie `<button onClick={handleClick}>` naprawi błąd:
573573

574574
<Sandpack>
575575

@@ -594,7 +594,7 @@ export default function LightSwitch() {
594594

595595
</Sandpack>
596596

597-
Ewentualnie, możesz owinąć wywołanie funkcji w inną funkcję w taki sposób `<button onClick={() => handleClick()}>`:
597+
Ewentualnie, możesz opakować wywołanie funkcji w inną funkcję w taki sposób `<button onClick={() => handleClick()}>`:
598598

599599
<Sandpack>
600600

@@ -621,7 +621,7 @@ export default function LightSwitch() {
621621

622622
</Solution>
623623

624-
#### Podpinanie zdarzeń {/*wire-up-the-events*/}
624+
#### Podłączanie zdarzeń {/*wire-up-the-events*/}
625625

626626
Komponent `ColorSwitch` renderuje przycisk. Powinien on zmieniać kolor strony. Podłącz go do procedury `onChangeColor`, którą otrzymuje od rodzica tak, aby kliknięcie przycisku faktycznie to zrobiło.
627627

@@ -669,7 +669,7 @@ export default function App() {
669669
<ColorSwitch onChangeColor={handleChangeColor} />
670670
<br />
671671
<br />
672-
<h2>Kliknięć na stronie: {clicks}</h2>
672+
<h2>Liczba kliknięć na stronie: {clicks}</h2>
673673
</div>
674674
);
675675
}
@@ -728,7 +728,7 @@ export default function App() {
728728
<ColorSwitch onChangeColor={handleChangeColor} />
729729
<br />
730730
<br />
731-
<h2>Kliknięć na stronie: {clicks}</h2>
731+
<h2>Liczba kliknięć na stronie: {clicks}</h2>
732732
</div>
733733
);
734734
}

0 commit comments

Comments
 (0)