From 61bbd40d7e853ed26b471c6361212b54068b9d19 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Jasi=C5=84ski?= Date: Sun, 27 Oct 2024 10:12:12 +0100 Subject: [PATCH 1/2] Final translation --- src/content/learn/responding-to-events.md | 304 +++++++++++----------- src/sidebarLearn.json | 2 +- 2 files changed, 152 insertions(+), 154 deletions(-) diff --git a/src/content/learn/responding-to-events.md b/src/content/learn/responding-to-events.md index 17bd087ed..ff8e8a11b 100644 --- a/src/content/learn/responding-to-events.md +++ b/src/content/learn/responding-to-events.md @@ -1,24 +1,24 @@ --- -title: Responding to Events +title: Obsługa zdarzeń --- -React lets you add *event handlers* to your JSX. Event handlers are your own functions that will be triggered in response to interactions like clicking, hovering, focusing form inputs, and so on. +React pozwala nam dodać *procedury obsługi zdarzeń* (ang. _event handlers_) do naszego JSX. 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. -* Different ways to write an event handler -* How to pass event handling logic from a parent component -* How events propagate and how to stop them +* Na jakie sposoby można pisać procedury obsługi zdarzeń +* Jak przekazać logikę obsługi zdarzeń z komponentu rodzica +* Jak zdarzenia są przekazywane i jak je powstrzymać -## Adding event handlers {/*adding-event-handlers*/} +## Dodawanie procedur obsługi zdarzeń {/*adding-event-handlers*/} -To add an event handler, you will first define a function and then [pass it as a prop](/learn/passing-props-to-a-component) to the appropriate JSX tag. For example, here is a button that doesn't do anything yet: +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 odpowiedniejgo tagu JSX. Na przykład, oto przycisk, który jeszcze nic nie robi: @@ -26,7 +26,7 @@ To add an event handler, you will first define a function and then [pass it as a export default function Button() { return ( ); } @@ -34,23 +34,23 @@ export default function Button() { -You can make it show a message when a user clicks by following these three steps: +Możesz sprawić, aby pokazywał wiadomość po kliknięciu go przez użytkownika, w tych trzech krokach: -1. Declare a function called `handleClick` *inside* your `Button` component. -2. Implement the logic inside that function (use `alert` to show the message). -3. Add `onClick={handleClick}` to the ` ); } @@ -62,78 +62,76 @@ button { margin-right: 10px; } -You defined the `handleClick` function and then [passed it as a prop](/learn/passing-props-to-a-component) to ` ); } function UploadButton() { return ( - ); } @@ -220,22 +218,22 @@ button { margin-right: 10px; } -Here, the `Toolbar` component renders a `PlayButton` and an `UploadButton`: +Tutaj, komponent `Toolbar` renderuje `PlayBytton` i `UploadButton`: -- `PlayButton` passes `handlePlayClick` as the `onClick` prop to the `Button` inside. -- `UploadButton` passes `() => alert('Uploading!')` as the `onClick` prop to the `Button` inside. +- `PlayButton` przekazuje `handlePlayClick` jako właściwość `onClick` do `Button` wewnątrz. +- `UploadButton` przekazuje `() => alert('Dodawanie!')` jako właściwość `onClick` do `Button` wewnątrz. -Finally, your `Button` component accepts a prop called `onClick`. It passes that prop directly to the built-in browser ` - ); @@ -268,9 +266,9 @@ button { margin-right: 10px; } -In this example, ` ); @@ -312,19 +310,19 @@ button { margin-right: 10px; } -Notice how the `App` component does not need to know *what* `Toolbar` will do with `onPlayMovie` or `onUploadImage`. That's an implementation detail of the `Toolbar`. Here, `Toolbar` passes them down as `onClick` handlers to its `Button`s, but it could later also trigger them on a keyboard shortcut. Naming props after app-specific interactions like `onPlayMovie` gives you the flexibility to change how they're used later. +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 tj. `onPlayMovie` pozwala ci wygodnie zmieniać w jaki sposób będą później użyte. - -Make sure that you use the appropriate HTML tags for your event handlers. For example, to handle clicks, use [` - ); @@ -355,19 +353,19 @@ button { margin: 5px; } -If you click on either button, its `onClick` will run first, followed by the parent `
`'s `onClick`. So two messages will appear. If you click the toolbar itself, only the parent `
`'s `onClick` will run. +Naciskając na którykowliek z przycisków, ich `onClick` uruchomi się jako pierwszy. Następnie wykona się `onClick` z nadrzędnego `
`a. Zatem pojawią się 2 wiadomości. Jeśli naciśniesz stricte na pasek, jedynie `onClick` `
`a zostanie uruchomiony -All events propagate in React except `onScroll`, which only works on the JSX tag you attach it to. +W Reakcie przekazywane jest każde zdarzenie, poza `onScroll`, które działa tylko na przypisanym do niego tagu JSX -### Stopping propagation {/*stopping-propagation*/} +### Powstrzymywanie przekazywania {/*stopping-propagation*/} -Event handlers receive an **event object** as their only argument. By convention, it's usually called `e`, which stands for "event". You can use this object to read information about the event. +Procedury obsługi zdarzeń otrzymują jako jedyny argument **obiekt zdarzenia** (ang. _event object_). Z definicji nazywany jest `e`, co pochodzi od angielskiego "event". Możesz go użyć do odczytu informacji o zdarzeniu -That event object also lets you stop the propagation. If you want to prevent an event from reaching parent components, you need to call `e.stopPropagation()` like this `Button` component does: +Poza tym, taki obiekt pozwala zatrzymać przekazanie. Jeśli chcesz powstrzymać zdarzenie od dotarcia do komponentu nadrzędnego, musisz wywołać `e.stopPropagation()` jak w tym komponencie `Button`: @@ -386,13 +384,13 @@ function Button({ onClick, children }) { export default function Toolbar() { return (
{ - alert('You clicked on the toolbar!'); + alert('Nacisnąłeś pasek zadań!'); }}> - -
); @@ -409,43 +407,43 @@ button { margin: 5px; }
-When you click on a button: +Gdy naciśniesz przycisk: -1. React calls the `onClick` handler passed to `
``` -Each event propagates in three phases: +Każde zdarzenie jest przekazywane w trzech fazach: -1. It travels down, calling all `onClickCapture` handlers. -2. It runs the clicked element's `onClick` handler. -3. It travels upwards, calling all `onClick` handlers. +1. Podróżuje w dół, wywołując wszystkie procedury `onClickCapture`. +2. Uruchamia procedurę `onClick` naciśniętego elementu. +3. Podróżuje w górę, wywołując wszystkie procedury `onClick`. -Capture events are useful for code like routers or analytics, but you probably won't use them in app code. +Przechwytywanie zdarzeń przydaje się przy tworzeniu np. routerów czy analityki, ale prawdopodobnie nie znajdzie szerszego zastosowania w kodzie aplikacji -### Passing handlers as alternative to propagation {/*passing-handlers-as-alternative-to-propagation*/} +### Przekazywanie procedur obsługi jako alternatywa dla porpagacji {/*passing-handlers-as-alternative-to-propagation*/} -Notice how this click handler runs a line of code _and then_ calls the `onClick` prop passed by the parent: +Zauważ, jak ta procedura uruchamia linię kodu, _a potem_ wywołuje właściwość `onClick` przekazaną przez rodzica: ```js {4,5} function Button({ onClick, children }) { @@ -460,22 +458,22 @@ function Button({ onClick, children }) { } ``` -You could add more code to this handler before calling the parent `onClick` event handler, too. This pattern provides an *alternative* to propagation. It lets the child component handle the event, while also letting the parent component specify some additional behavior. Unlike propagation, it's not automatic. But the benefit of this pattern is that you can clearly follow the whole chain of code that executes as a result of some event. +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ść czystego podążania za całym ciągiem kody, który wykonuje się jako wynik jakiegoś zdarzenia -If you rely on propagation and it's difficult to trace which handlers execute and why, try this approach instead. +Jeśli używając propagacji jest ci ciężko wyśledzić które procedury są wykonywane i dlaczego, spróbuj tego podejścia. -### Preventing default behavior {/*preventing-default-behavior*/} +### Powstrzymywanie domyślnego zachowania {/*preventing-default-behavior*/} -Some browser events have default behavior associated with them. For example, a `
` submit event, which happens when a button inside of it is clicked, will reload the whole page by default: +Niektóre zdarzenia przeglądarki mają domyślne zachowanie powiązane z nim. Np. zdarzenie wysłania formularze, które następuje gdy naciśnięty zostanie przycisk w jego wnętrzu, domyślnie przeładuje całą stronę: ```js export default function Signup() { return ( - alert('Submitting!')}> + alert('Wysyłanie!')}> - + ); } @@ -487,7 +485,7 @@ button { margin-left: 5px; }
-You can call `e.preventDefault()` on the event object to stop this from happening: +Możesz wywołać `e.preventDefault()` z tego obiektu zdarzenia, aby powstrzymać domyślne zachowanie: @@ -496,10 +494,10 @@ export default function Signup() { return (
{ e.preventDefault(); - alert('Submitting!'); + alert('Wysyłanie!'); }}> - +
); } @@ -511,28 +509,28 @@ button { margin-left: 5px; }
-Don't confuse `e.stopPropagation()` and `e.preventDefault()`. They are both useful, but are unrelated: +Nie myl `e.stopPropagation()` i `e.preventDefault()`. Oba są użyteczne, ale nie powiązane: -* [`e.stopPropagation()`](https://developer.mozilla.org/docs/Web/API/Event/stopPropagation) stops the event handlers attached to the tags above from firing. -* [`e.preventDefault()` ](https://developer.mozilla.org/docs/Web/API/Event/preventDefault) prevents the default browser behavior for the few events that have it. +* [`e.stopPropagation()`](https://developer.mozilla.org/docs/Web/API/Event/stopPropagation) zatrzymuje procedury obsługi zdarzeń przypisane do tagów wyżej przed uruchomieniem. +* [`e.preventDefault()` ](https://developer.mozilla.org/docs/Web/API/Event/preventDefault) powstrzymuje domyślne zachowanie przeglądarki dla paru zdarzeń, które je posiadają. -## Can event handlers have side effects? {/*can-event-handlers-have-side-effects*/} +## Czy procedury obsługi zdarzeń mają efekty uboczne? {/*can-event-handlers-have-side-effects*/} -Absolutely! Event handlers are the best place for side effects. +Oczywiście! Procedury obsługi zdarzeń to najlepsze miejsce na efekty uboczne. -Unlike rendering functions, event handlers don't need to be [pure](/learn/keeping-components-pure), so it's a great place to *change* something—for example, change an input's value in response to typing, or change a list in response to a button press. However, in order to change some information, you first need some way to store it. In React, this is done by using [state, a component's memory.](/learn/state-a-components-memory) You will learn all about it on the next page. +W przeciwieństwie do funkcji renderujących, procedury obsługi zdarzeń nie muszą być [czyste](/learn/keeping-components-pure), więc jest to śwetne miejsce by coś *zmienić* - na przykład, zmień wartość input'a w odpowiedzi na wpisywanie, lub zmień listę po naciśnięciu przycisku. Jednakże, aby cokolwiek pozmieniać, musisz wpierw jakoś to przechować. W Reakcie, używa się do tego [stanu, pamięci komponentu](/learn/state-a-components-memory) Wszystkiego o tym nauczysz się na następnej stronie. -* You can handle events by passing a function as a prop to an element like ` ); } @@ -569,7 +567,7 @@ export default function LightSwitch() { -The problem is that ` ); } @@ -594,7 +592,7 @@ export default function LightSwitch() { -Alternatively, you could wrap the call into another function, like ` ); } @@ -621,11 +619,11 @@ export default function LightSwitch() { -#### Wire up the events {/*wire-up-the-events*/} +#### Podpinanie zdarzeń {/*wire-up-the-events*/} -This `ColorSwitch` component renders a button. It's supposed to change the page color. Wire it up to the `onChangeColor` event handler prop it receives from the parent so that clicking the button changes the color. +Ten komponent `ColorSwitch` renderuje przycisk. Powinien zmieniać kolor strony. Podłącz go do procedury `onChangeColor`, którą otrzymuje od rodzica tak, że kliknięcie w przycisk faktycznie zmieni kolor -After you do this, notice that clicking the button also increments the page click counter. Your colleague who wrote the parent component insists that `onChangeColor` does not increment any counters. What else might be happening? Fix it so that clicking the button *only* changes the color, and does _not_ increment the counter. +Gdy już to zrobisz, zauważ że kliknięcie przycisku inkrementuje również licznik kliknięć strony. Twój kolega, który napisał komponent nadrzędny uważa, że `onChangeColor` nie inkrementuje żadnych liczników. Co innego może się dziać? Napraw to tak, że kliknięcie przycisku zmieni *jedynie* kolor i _nie_ zinkrementuje licznika. @@ -635,7 +633,7 @@ export default function ColorSwitch({ }) { return ( ); } @@ -669,7 +667,7 @@ export default function App() {

-

Clicks on the page: {clicks}

+

Kliknięć na stronie: {clicks}

); } @@ -679,9 +677,9 @@ export default function App() { -First, you need to add the event handler, like ` ); } @@ -728,7 +726,7 @@ export default function App() {

-

Clicks on the page: {clicks}

+

Kliknięć na stronie: {clicks}

); } diff --git a/src/sidebarLearn.json b/src/sidebarLearn.json index 935fc852b..5f8e95b20 100644 --- a/src/sidebarLearn.json +++ b/src/sidebarLearn.json @@ -104,7 +104,7 @@ "tags": [], "routes": [ { - "title": "Responding to Events", + "title": "Obsługa zdarzeń", "path": "/learn/responding-to-events" }, { From 37cec8d49544dff4ffc9be1083ccd66bfc420c88 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Jasi=C5=84ski?= Date: Sun, 27 Oct 2024 10:18:57 +0100 Subject: [PATCH 2/2] fixed a typo --- src/content/learn/responding-to-events.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/content/learn/responding-to-events.md b/src/content/learn/responding-to-events.md index ff8e8a11b..81bc57de8 100644 --- a/src/content/learn/responding-to-events.md +++ b/src/content/learn/responding-to-events.md @@ -94,7 +94,7 @@ Funkcje przekazywane do procedury obsługi zdarzeń, nie wywołane. Na przykład | -------------------------------- | ---------------------------------- | | `