You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: src/content/learn/conditional-rendering.md
+20-20Lines changed: 20 additions & 20 deletions
Original file line number
Diff line number
Diff line change
@@ -4,7 +4,7 @@ title: Умовний рендеринг
4
4
5
5
<Intro>
6
6
7
-
Ваши компоненти часто потребують відображати різний контент в залежності від умови. У React ви можете умовно рендерити JSX, використовуючи синтаксис JavaScript: оператори `if`, `&&` та `? :`.
7
+
Ваші компоненти часто матимуть потребу відображати різні речі в залежності від різних умов. У React ви можете умовно рендерити JSX, використовуючи синтаксис JavaScript: оператори `if`, `&&` та `? :`.
8
8
9
9
</Intro>
10
10
@@ -100,13 +100,13 @@ export default function PackingList() {
100
100
101
101
</Sandpack>
102
102
103
-
Спробуйте змінити код цього прикладу та подивіться, як змінюється результат!
103
+
Спробуйте змінити що повертає цей код цього в обох випадках та подивіться, як змінюється результат!
104
104
105
-
Зверніть увагу, як ви створюєте розгалужену логіку використовуючи `if` та `return`із JavaScript. У React керування потоком (наприклад, умовами) обробляється за допомогою JavaScript.
105
+
Зверніть увагу на те, як ви створюєте розгалужену логіку з JavaScript `if` та `return`виразами. У React, потік контролю (так само як і умови, стани) обробляється за допомогою JavaScript.
106
106
107
-
### Умовне повернення пустоти за допомогою `null` {/*conditionally-returning-nothing-with-null*/}
107
+
### Умовне повернення нічого за допомогою `null` {/*conditionally-returning-nothing-with-null*/}
108
108
109
-
У деяких ситуаціях ви хочете взагалі нічого не відображати. Наприклад, скажімо, ви не хочете показувати запаковані елементи взагалі. Але компонент повинен повертати щось. У цьому випадку ви можете повернути `null`:
109
+
У певних ситуаціях, ви не хотітимете рендерити взагалі будь-що. Наприклад, скажімо, ви не хочете рендерити запаковані елементи взагалі. Але компонент повинен повертати щось. У цьому випадку ви можете повернути `null`:
110
110
111
111
```js
112
112
if (isPacked) {
@@ -152,11 +152,11 @@ export default function PackingList() {
152
152
153
153
</Sandpack>
154
154
155
-
Практика поверення `null` з компонента не є поширенною, оскільки це може здивувати розробника, який намагається його відобразити. Частіше ви б умовно включали або виключали компонент у JSX батьківського компонента. Ось як це зробити!
155
+
Повернення `null` з компонента не є поширеною практикою, оскільки це може застати зненацька розробника, який намагається його відобразити. Часто, ви умовно включатимете або виключатимете компонент в JSX батьківського компонента. Ось як це зробити!
156
156
157
157
## Умовне включення JSX {/*conditionally-including-jsx*/}
158
158
159
-
У попередньому прикладі ви контролювали, яке JSX-дерево повертатиме компонент, якщо взагалі буде. Ви вже могли помітити деяке дублювання у результаті рендера:
159
+
У попередньому прикладі ви контролювали, яке JSX-дерево буде повернено компонентом. Ви вже могли помітити деяке дублювання у виводі рендеру:
160
160
161
161
```js
162
162
<li className="item">{name} ✔</li>
@@ -168,7 +168,7 @@ export default function PackingList() {
168
168
<li className="item">{name}</li>
169
169
```
170
170
171
-
Обидві умовні гілки повертають `<li className="item">...</li>`:
171
+
Обидві гілки умов повертають `<li className="item">...</li>`:
172
172
173
173
```js
174
174
if (isPacked) {
@@ -177,7 +177,7 @@ if (isPacked) {
177
177
return<li className="item">{name}</li>;
178
178
```
179
179
180
-
Хоча це дублювання не шкідливе, воно може ускладнити підтримку вашого коду. Що, якщо ви хочете змінити `className`? Вам доведеться робити це в двох місцях у вашому коду! У такій ситуації ви могли б умовно включити трохи JSX, щоб зробити ваш код більш [DRY.](https://en.wikipedia.org/wiki/Don%27t_repeat_yourself)
180
+
Хоча це дублювання не є шкідливим, воно може ускладнити підтримування вашого коду. Що, якщо ви захочете змінити `className`? Вам доведеться зробити це в двох місцях вашого коду! У такій ситуації ви могли б умовно включити трохи JSX, щоб зробити ваш код більш [DRY.](https://en.wikipedia.org/wiki/Don%27t_repeat_yourself)
Це можна прочитати як *"якщо `isPacked`-- true, тоді (`?`) відобразити `name + ' ✔'`, в іншому випадку (`:`) відобразити `name`"*.
205
+
Це можна прочитати як *"якщо `isPacked`є true, тоді (`?`) відобразити `name + ' ✔'`, в іншому випадку (`:`) відобразити `name`"*.
206
206
207
207
<DeepDive>
208
208
209
209
#### Чи ці два приклади повністю еквівалентні? {/*are-these-two-examples-fully-equivalent*/}
210
210
211
-
Якщо ви прийшли з об'єктно-орієнтованого програмування, ви можете припустити, що два приклади вище є трохи різними, оскільки один з них може створити два різних "екземпляри" `<li>`. Але JSX-елементи не є "екземплярами", оскільки вони не містять жодного внутрішнього стану і не є реальними вузлами DOM. Це легкі описи, подібні до креслень. Таким чином, ці два приклади, насправді, *є* абсолютно еквівалентними. [Збереження та скидання стану](/learn/preserving-and-resetting-state) детально розповідає про те, як це працює.
211
+
Якщо у вас є досвід з об'єктно-орієнтованого програмування, ви можете припустити, що два приклади вище є трохи різними, оскільки один з них може створити дві різні "сутності" `<li>`. Але JSX-елементи не є "сутностями", оскільки вони не містять жодного внутрішнього стану і не є реальними вузлами DOM. Це легкі описи, подібні до креслень. Таким чином, ці два приклади, насправді, *є* абсолютно еквівалентними. [Збереження та скидання стану](/learn/preserving-and-resetting-state) детально розповідає про те, як це працює.
212
212
213
213
</DeepDive>
214
214
215
-
Тепер, скажімо, ви хочете обернути текст елемента в інший HTML-тег, наприклад `<del>`, щоб його перекреслити. Ви можете додати ще більше нових рядків і дужок, щоб було легше використовувати вкладенний JSX в кожному з випадків:
215
+
Тепер, скажімо, ви хочете обгорнути текст елемента в інший HTML-тег, наприклад `<del>`, щоб його перекреслити. Ви можете додати ще більше нових рядків і дужок, щоб було легше використовувати вкладенний JSX в кожному з випадків:
216
216
217
217
<Sandpack>
218
218
@@ -256,11 +256,11 @@ export default function PackingList() {
256
256
257
257
</Sandpack>
258
258
259
-
Цей стиль добре працює для простих умов, але використовуйте його з розумом. Якщо ваші компоненти стають заплутаними через занадто великі вкладені умовні розмітки, розгляньте можливість витягнення дочірніх компонентів, щоб все виглядало охайніше та зрозуміліше. У React розмітка є частиною вашого коду, тому ви можете використовувати такі інструменти, як змінні та функції, щоб спростити складні вирази.
259
+
Цей стиль добре працює для простих умов, але використовуйте його з розумом. Якщо ваші компоненти стають заплутаними через велику вкладену умовну розмітку, подумайте над "розпакуванням" дочірніх компонентів, щоб все виглядало охайніше. У React розмітка є частиною вашого коду, тому ви можете використовувати такі інструменти, як змінні та функції, щоб спростити складні вирази.
260
260
261
261
### Логічний оператор AND (`&&`) {/*logical-and-operator-*/}
262
262
263
-
Інший поширений шорткат, з яким ви зіткнетеся -- [логічний оператор AND (`&&`) JavaScript.](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Logical_AND#:~:text=The%20logical%20AND%20(%20%26%26%20)%20operator,it%20returns%20a%20Boolean%20value.) Всередині компонентів React він часто з'являється, коли ви хочете відрендерити деякий JSX, коли умова є істинною, **або нічого не рендерити в іншому випадку.** З `&&` ви могли б умовно відрендерити позначку, лише якщо `isPacked`дорівнює`true`:
263
+
Ще одне поширене скорочення, з яким ви зіткнетеся -- [логічний оператор AND (`&&`) JavaScript.](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Logical_AND#:~:text=The%20logical%20AND%20(%20%26%26%20)%20operator,it%20returns%20a%20Boolean%20value.) Всередині компонентів React він часто з'являється, коли ви хочете відрендерити деякий JSX, коли умова є `true`, **або нічого не рендерити в іншому випадку.** З `&&` ви могли б умовно відрендерити позначку, лише якщо `isPacked`є`true`:
264
264
265
265
```js
266
266
return (
@@ -317,9 +317,9 @@ export default function PackingList() {
317
317
318
318
**Не ставте числа зліва від `&&`.**
319
319
320
-
Щоб перевірити умову, JavaScript автоматично перетворює ліву сторону на булеве значення. Однак, якщо ліва сторона дорівнює`0`, то весь вираз отримує це значення (`0`), і React з задоволенням відрендерить `0` замість нічого.
320
+
Щоб перевірити умову, JavaScript автоматично перетворює ліву сторону на булеве значення. Однак, якщо ліва сторона є`0`, то весь вираз отримує це значення (`0`), і React з задоволенням відрендерить `0` замість нічого.
321
321
322
-
Наприклад, поширеною помилкою є написання коду типу `messageCount && <p>New messages</p>`. Легко припустити, що він не рендерить нічого, коли `messageCount` дорівнює `0`, але насправді він рендерить сам `0`!
322
+
Наприклад, поширеною помилкою є написання коду типу `messageCount && <p>New messages</p>`. Легко припустити, що він нічого не рендерить, коли `messageCount` дорівнює `0`, але насправді він рендерить сам `0`!
323
323
324
324
Щоб виправити це, зробіть ліву сторону булевою: `messageCount > 0 && <p>New messages</p>`.
325
325
@@ -341,7 +341,7 @@ if (isPacked) {
341
341
}
342
342
```
343
343
344
-
[Фігурні дужки відкривають "вікно в JavaScript".](/learn/javascript-in-jsx-with-curly-braces#using-curly-braces-a-window-into-the-javascript-world) Вбудуйте змінну з фігурними дужками в JSX-дерево, вкладаючи раніше обчислений вираз всередину JSX:
344
+
[Фігурні дужки відкривають "вікно в JavaScript".](/learn/javascript-in-jsx-with-curly-braces#using-curly-braces-a-window-into-the-javascript-world) Вбудуйте змінну з фігурними дужками в повернене JSX-дерево, вкладаючи раніше обчислений вираз всередині JSX:
345
345
346
346
```js
347
347
<li className="item">
@@ -437,7 +437,7 @@ export default function PackingList() {
437
437
438
438
</Sandpack>
439
439
440
-
Якщо ви не знайомі з JavaScript, цей різноманітний стиль може здатися вам спочатку приголомшливим. Однак, вивчення різних з них допоможе вам читати та писати будь-який код JavaScript -- і не тільки компоненти React! Виберіть той, який вам більше подобається для початку, а потім зверніться до цього довідника знову, якщо ви забудете, як працюють інші.
440
+
Якщо ви не знайомі з JavaScript, то ця різноманітність стилів може спершу здатися вам занадто складною. Однак, їх знання допоможе вам читати та писати будь-який код JavaScript -- і не тільки компоненти React! Виберіть той, який вам більше подобається для початку, а потім зверніться до цього довідника знову, якщо ви забудете, як працюють інші.
441
441
442
442
<Recap>
443
443
@@ -632,7 +632,7 @@ export default function PackingList() {
632
632
633
633
#### Рефакторінг послідовності `? :` на `if` та змінні {/*refactor-a-series-of---to-if-and-variables*/}
634
634
635
-
Цей компонент `Drink` використовує послідовність умов `? :` для відображення різної інформації в залежності від того, чи є проп `name``"tea"` або `"coffee"`. Проблема в тому, що інформація про кожний напій розподілена між кількома умовами. Рефакторінг цього коду, щоб використовувати один `if` замість трьох умов `? :`.
635
+
Цей компонент `Drink` використовує послідовність умов `? :` для відображення різної інформації в залежності від того, чи проп `name`є `"tea"` або `"coffee"`. Проблема в тому, що інформація про кожний напій розподілена між кількома умовами. Відрефакторіть цей код, щоб використовувати один `if` замість трьох умов `? :`.
636
636
637
637
<Sandpack>
638
638
@@ -665,7 +665,7 @@ export default function DrinkList() {
665
665
666
666
</Sandpack>
667
667
668
-
Після того, як ви рефакторили код, щоб використовувати `if`, у вас є ідеї, як його можна спростити?
668
+
Після того, як ви відрефакторили код, щоб використовувати `if`, у вас є ще ідеї, як його можна спростити?
0 commit comments