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/your-first-component.md
+18-18Lines changed: 18 additions & 18 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -33,7 +33,7 @@ title: Ваш перший компонент
33
33
34
34
Ця розмітка представляє статтю `<article>`, її заголовок `<h1>`, та (скорочений) зміст у вигляді впорядкованого списку `<ol>`. Розмітка подібна до цієї, в поєднанні з CSS для стилізації та JavaScript для інтерактивності, лежить в основі кожної бічної панелі, аватара, модального вікна, випадного меню — кожного елемента UI, який ви бачите в Вебі.
35
35
36
-
React дозволяє вам поєднувати вашу розмітку, CSS та JavaScript у власні "компоненти", **повторно використовувані елементи UI для вашого додатку.**Зміст коду, який ви бачили вище, можна перетворити на компонент `<TableOfContents />`, який ви можете відобразити на кожній сторінці. Під капотом він все ще використовує ті ж самі HTML-теги, такі як `<article>`, `<h1>`, тощо.
36
+
React дозволяє вам поєднувати вашу розмітку, CSS та JavaScript у власні "компоненти", **повторно використовувані елементи UI для вашого додатку.**Код змісту, який ви бачили вище, можна перетворити на компонент `<TableOfContents />`, який ви можете відобразити на кожній сторінці. Під капотом він все ще використовує ті ж самі HTML-теги, такі як `<article>`, `<h1>`, тощо.
37
37
38
38
Так само, як і з HTML-тегами, ви можете компонувати, впорядковувати та вкладати компоненти для створення цілих сторінок. Наприклад, сторінка документації, яку ви читаєте, складається з компонентів React:
Зі зростанням вашого проекту ви помітите, що багато з ваших дизайнів можна створити шляхом повторного використання компонентів, які ви вже написали, що пришвидшує вашу розробку. Наш зміст вище може бути доданий до будь-якого екрану за допомогою `<TableOfContents />`! Ви навіть можете розпочати свій проект з тисячами компонентів, які поділяє спільнота відкритого коду React, таких як[Chakra UI](https://chakra-ui.com/) та [Material UI.](https://material-ui.com/)
54
+
Зі зростанням вашого проекту ви помітите, що багато з ваших дизайнів можна створити шляхом повторного використання компонентів, які ви вже написали, що пришвидшує вашу розробку. Наш зміст вище може бути доданий до будь-якого екрану за допомогою `<TableOfContents />`! Ви навіть можете розпочати свій проект з тисячами компонентів, які поділяє спільнота відкритого коду React, як-от[Chakra UI](https://chakra-ui.com/) та [Material UI.](https://material-ui.com/)
55
55
56
56
## Визначення компонента {/*defining-a-component*/}
57
57
58
-
Традиційно, створюючи веб-сторінки, веб-розробники розмічали свій контент і додавали взаємодію, розсипаючи трохи JavaScript. Це чудово працювало, коли взаємодія була приємним доповненням до вебу. Тепер це очікується на багатьох сайтах і в усіх додатках. React ставить взаємодію на перше місце, використовуючи при цьому ту ж технологію: **компонент React - це функція JavaScript, яку можна _посипати розміткою_.** Ось як це виглядає (ви можете відредагувати приклад нижче):
58
+
Традиційно, створюючи веб-сторінки, веб-розробники спершу писали розмітку їхнього контенту, а потім додавали інтерактив, трохи посипаючи JavaScript'ом. Це чудово працювало, коли інтерактив була приємним доповненням до вебу. Тепер це очікується на багатьох сайтах і в усіх додатках. React ставить взаємодію на перше місце, використовуючи при цьому ту ж технологію: **компонент React - це функція JavaScript, яку можна _посипати розміткою_.** Ось як це виглядає (ви можете відредагувати приклад нижче):
Префікс `export default` це [стандартний синтаксис JavaScript](https://developer.mozilla.org/docs/web/javascript/reference/statements/export) (не специфічний для React). Він дозволяє вам позначити головну функцію у файлі, щоб ви могли потім імпортувати її з інших файлів. (Детальніше про імпорт у розділі [Імпортування та експортування компонентів](/learn/importing-and-exporting-components)!)
83
+
Префікс `export default` це [стандартний синтаксис JavaScript](https://developer.mozilla.org/docs/web/javascript/reference/statements/export) (не специфічний для React). Він дозволяє вам позначити головну функцію у файлі, щоб ви могли потім імпортувати її з інших файлів. (Детальніше про імпортування у розділі [Імпортування та експортування компонентів](/learn/importing-and-exporting-components)!)
84
84
85
85
### Крок 2: Визначення функції {/*step-2-define-the-function*/}
86
86
@@ -95,13 +95,13 @@ React компоненти є звичайними JavaScript функціями
95
95
96
96
Компонент повертає тег `<img />` з атрибутами `src` та `alt`. `<img />` записаний як HTML, але насправді це JavaScript під капотом! Цей синтаксис називається [JSX](/learn/writing-markup-with-jsx), і він дозволяє вам вбудовувати розмітку всередину JavaScript.
97
97
98
-
Оператори повернення можуть бути записані на одному рядку, як у цьому компоненті:
98
+
Оператори повернення можуть бути записані в одному рядку, як у цьому компоненті:
Але якщо ваша розмітка не розташована на тому ж рядку, що й ключове слово `return` ви повинні обернути її в пару дужок:
104
+
Але якщо ваша розмітка не розташована в тому ж рядку, що й ключове слово `return` ви повинні обгорнути її в пару дужок:
105
105
106
106
```js
107
107
return (
@@ -113,13 +113,13 @@ return (
113
113
114
114
<Pitfall>
115
115
116
-
Без дужок будь-який код на рядках після `return`[буде проігноровано](https://stackoverflow.com/questions/2846283/what-are-the-rules-for-javascripts-automatic-semicolon-insertion-asi)!
116
+
Без дужок, будь-який код в рядках після `return`[буде проігноровано](https://stackoverflow.com/questions/2846283/what-are-the-rules-for-javascripts-automatic-semicolon-insertion-asi)!
117
117
118
118
</Pitfall>
119
119
120
120
## Застосування компонента {/*using-a-component*/}
121
121
122
-
Тепер, коли ви визначили свій компонент `Profile`, ви можете вкладати його всередину інших компонентів. Наприклад, ви можете експортувати компонент `Gallery`, який використовує кілька компонентів `Profile`:
122
+
Тепер, коли ви створили свій компонент `Profile`, ви можете вкладати його всередину інших компонентів. Наприклад, ви можете експортувати компонент `Gallery`, який використовує кілька компонентів `Profile`:
### Вкладення та організація компонентів {/*nesting-and-organizing-components*/}
173
173
174
-
Компоненти є звичайними функціями JavaScript, тому ви можете зберігати кілька компонентів у одному файлі. Це зручно, коли компоненти є досить малими або тісно пов'язаними між собою. Якщо цей файл стає переповненим, ви завжди можете перемістити компонент `Profile` до окремого файлу. Незабаром ви навчитеся це робити на [сторінці про імпорт.](/learn/importing-and-exporting-components)
174
+
Компоненти є звичайними JavaScript функціями, тому ви можете зберігати кілька компонентів у одному файлі. Це зручно, коли компоненти є досить малими або тісно пов'язаними між собою. Якщо цей файл стає переповненим, ви завжди можете перемістити компонент `Profile` до окремого файлу. Незабаром ви навчитеся це робити на [сторінці про імпорт.](/learn/importing-and-exporting-components)
175
175
176
176
Тому що компоненти `Profile` рендеряться всередині `Gallery`—навіть кілька разів!—ми можемо сказати, що `Gallery` є **батьківським компонентом,** який рендерить кожний `Profile` як "дочірній". Це частина магії React: ви можете визначити компонент один раз і потім використовувати його в будь-яких місцях та скільки завгодно разів.
177
177
178
178
<Pitfall>
179
179
180
-
Компоненти можуть рендерити інші компоненти, але **ви не повинні вкладати їх визначення одне в одне:**
180
+
Компоненти можуть рендерити інші компоненти, але **ви не повинні вкладати їх створення одне в інше:**
181
181
182
182
```js {2-5}
183
183
exportdefaultfunctionGallery() {
184
-
// 🔴 Ніколи не визначайте компонент всередині іншого компонента!
184
+
// 🔴 Ніколи не створюйте компонент всередині іншого компонента!
185
185
functionProfile() {
186
186
// ...
187
187
}
188
188
// ...
189
189
}
190
190
```
191
191
192
-
Код вище [дуже повільний і може призводити до помилок.](/learn/preserving-and-resetting-state#different-components-at-the-same-position-reset-state) Натомість, визначайте кожен компонент на верхньому рівні:
192
+
Код вище [дуже повільний і може призводити до помилок.](/learn/preserving-and-resetting-state#different-components-at-the-same-position-reset-state) Натомість, створюйте кожен компонент на верхньому рівні:
193
193
194
194
```js {5-8}
195
195
exportdefaultfunctionGallery() {
@@ -202,19 +202,19 @@ function Profile() {
202
202
}
203
203
```
204
204
205
-
Якщо дочірній компонент потребує деяких даних від батьківського компонента, [передавайте їх за допомогою пропсів](/learn/passing-props-to-a-component) замість вкладення визначень.
205
+
Якщо дочірній компонент потребує деяких даних від батьківського компонента, [передавайте їх за допомогою пропсів](/learn/passing-props-to-a-component) замість вкладення створень.
206
206
207
207
</Pitfall>
208
208
209
209
<DeepDive>
210
210
211
211
#### Компоненти на всій глибині {/*components-all-the-way-down*/}
212
212
213
-
Ваш додаток React починається з "кореневого" компонента. Зазвичай він створюється автоматично, коли ви створюєте новий проект. Наприклад, якщо ви використовуєте [CodeSandbox](https://codesandbox.io/) або [Create React App](https://create-react-app.dev/), кореневий компонент визначений в `src/App.js`. Якщо ви використовуєте фреймворк [Next.js](https://nextjs.org/), кореневий компонент визначений в `pages/index.js`. У цих прикладах ви експортували кореневі компоненти.
213
+
Ваш React додаток починається з "кореневого" компонента. Зазвичай він створюється автоматично, коли ви створюєте новий проект. Наприклад, якщо ви використовуєте [CodeSandbox](https://codesandbox.io/) або [Create React App](https://create-react-app.dev/), кореневий компонент визначений в `src/App.js`. Якщо ви використовуєте фреймворк [Next.js](https://nextjs.org/), кореневий компонент визначений в `pages/index.js`. У цих прикладах ви експортували кореневі компоненти.
214
214
215
215
Більшість додатків React використовують компоненти на всій глибині. Це означає, що ви будете використовувати компоненти не тільки для повторно використовуваних елементів, таких як кнопки, але й для більших елементів, таких як бічні панелі, списки та, врешті-решт, цілі сторінки! Компоненти - зручний спосіб організації коду UI та розмітки, навіть якщо деякі з них використовуються лише один раз.
216
216
217
-
[Фреймворки на основі React](/learn/start-a-new-react-project) йдуть ще далі. Замість використання порожнього HTML-файлу і дозволу React "перейняти" керування сторінкою за допомогою JavaScript, вони також автоматично генерують HTML з вашими компонентами React. Це дозволяє вашому додатку показувати деякий вміст до завантаження коду JavaScript.
217
+
[Фреймворки на основі React](/learn/start-a-new-react-project)в цьому плані йдуть ще далі. Замість використання порожнього HTML-файлу і дозволу React "перейняти" керування сторінкою за допомогою JavaScript, вони також автоматично генерують HTML з ваших React компонентів. Це дозволяє вашому додатку показувати деякий контент до завантаження JavaScript коду.
218
218
219
219
Проте, багато сайтів використовують React лише для [додавання інтерактивності до існуючих HTML-сторінок.](/learn/add-react-to-an-existing-project#using-react-for-a-part-of-your-existing-page) Вони мають кілька кореневих компонентів замість одного для всієї сторінки. Ви можете використовувати стільки React, скільки вам потрібно.
Цей sandbox не працює, тому що основний компонент не експортований:
242
+
Код в цій пісочниці не працює, тому що основний компонент не експортований:
243
243
244
244
<Sandpack>
245
245
@@ -295,7 +295,7 @@ img { height: 181px; }
295
295
296
296
<Hint>
297
297
298
-
Під час спроби виправити це, можливо, ви отримаєте помилку "Unexpected token". У такому випадку, перевірте, чи крапка з комою знаходиться після закриваючої дужки. Залишення крапки з комою всередині `return ( )` призведе до помилки.
298
+
Під час спроби виправити це, можливо, ви отримаєте помилку "Unexpected token". У такому випадку, перевірте, чи крапка з комою знаходиться після закриваючої дужки. Якщо ви залишите крапку з комою всередині `return ( )` - це призведе до помилки.
299
299
300
300
</Hint>
301
301
@@ -317,7 +317,7 @@ img { height: 180px; }
317
317
318
318
<Solution>
319
319
320
-
Цей компонент можна виправити, перенісши оператор return на одну лінію:
320
+
Цей компонент можна виправити, якщо перенести оператор return на одну лінію таким чином:
0 commit comments