-
{person.name}'s Todos
+
Список дел {person.name}
```
-JSX is very minimal as a templating language because it lets you organize data and logic using JavaScript.
+JSX очень минималистичный язык шаблонов, потому что он позволяет организовывать данные и логику с помощью JavaScript.
-Now you know almost everything about JSX:
+Теперь вы знаете почти все о JSX:
-* JSX attributes inside quotes are passed as strings.
-* Curly braces let you bring JavaScript logic and variables into your markup.
-* They work inside the JSX tag content or immediately after `=` in attributes.
-* `{{` and `}}` is not special syntax: it's a JavaScript object tucked inside JSX curly braces.
+* Атрибуты JSX в кавычках передаются как строки.
+* Фигурные скобки позволяют использовать JavaScript-логику и переменные в вашей разметке.
+* Они работают внутри содержимого тега JSX или непосредственно после `=` в атрибутах.
+* `{{` и `}}` не являются специальным синтаксисом: это объект JavaScript, спрятанный внутри фигурных скобок JSX.
-#### Fix the mistake {/*fix-the-mistake*/}
+#### Исправьте ошибку {/*fix-the-mistake*/}
-This code crashes with an error saying `Objects are not valid as a React child`:
+Этот код выдаёт ошибку `Objects are not valid as a React child`:
```js
const person = {
- name: 'Gregorio Y. Zara',
+ name: 'Грегорио И. Зара',
theme: {
backgroundColor: 'black',
color: 'pink'
@@ -263,16 +265,16 @@ const person = {
export default function TodoList() {
return (
-
{person}'s Todos
+
Список дел {person}
- - Improve the videophone
- - Prepare aeronautics lectures
- - Work on the alcohol-fuelled engine
+ - Улучшить видеотелефон
+ - Подготовить лекции по аэронавтике
+ - Работать над спиртовым двигателем
);
@@ -287,21 +289,21 @@ body > div > div { padding: 20px; }
-Can you find the problem?
+Можете найти проблему?
-Look for what's inside the curly braces. Are we putting the right thing there?
+Ищите то, что находится внутри фигурных скобок. Всё ли правильно мы туда помещаем?
-This is happening because this example renders *an object itself* into the markup rather than a string: `{person}'s Todos
` is trying to render the entire `person` object! Including raw objects as text content throws an error because React doesn't know how you want to display them.
+Так происходит потому, что этот пример рендерит *сам объект* в разметку, а не строку: `Список дел {person}
` пытается отренлерить весь объект `person`! Рендер объектов как текстовое содержимое вызывает ошибку, потому что React не знает, как их отображать.
-To fix it, replace `{person}'s Todos
` with `{person.name}'s Todos
`:
+Чтобы это исправить замените `Список дел {person}
` на `Список дел {person.name}
`:
```js
const person = {
- name: 'Gregorio Y. Zara',
+ name: 'Грегорио И. Зара',
theme: {
backgroundColor: 'black',
color: 'pink'
@@ -311,16 +313,16 @@ const person = {
export default function TodoList() {
return (
-
{person.name}'s Todos
+
Список дел {person.name}
- - Improve the videophone
- - Prepare aeronautics lectures
- - Work on the alcohol-fuelled engine
+ - Улучшить видеотелефон
+ - Подготовить лекции по аэронавтике
+ - Работать над спиртовым двигателем
);
@@ -337,15 +339,15 @@ body > div > div { padding: 20px; }
-#### Extract information into an object {/*extract-information-into-an-object*/}
+#### Извлеките информацию в объект {/*extract-information-into-an-object*/}
-Extract the image URL into the `person` object.
+Извлеките URL изображения в объект `person`.
```js
const person = {
- name: 'Gregorio Y. Zara',
+ name: 'Грегорио И. Зара',
theme: {
backgroundColor: 'black',
color: 'pink'
@@ -355,16 +357,16 @@ const person = {
export default function TodoList() {
return (
-
{person.name}'s Todos
+
Список дел {person.name}
- - Improve the videophone
- - Prepare aeronautics lectures
- - Work on the alcohol-fuelled engine
+ - Улучшить видеотелефон
+ - Подготовить лекции по аэронавтике
+ - Работать над спиртовым двигателем
);
@@ -381,13 +383,13 @@ body > div > div { padding: 20px; }
-Move the image URL into a property called `person.imageUrl` and read it from the `
` tag using the curlies:
+Переместите URL-адрес изображения в свойство `person.imageUrl` и прочитайте его из тега `
` с помощью фигурных скобок:
```js
const person = {
- name: 'Gregorio Y. Zara',
+ name: 'Грегорио И. Зара',
imageUrl: "https://i.imgur.com/7vQD0fPs.jpg",
theme: {
backgroundColor: 'black',
@@ -398,16 +400,16 @@ const person = {
export default function TodoList() {
return (
-
{person.name}'s Todos
+
Список дел {person.name}
- - Improve the videophone
- - Prepare aeronautics lectures
- - Work on the alcohol-fuelled engine
+ - Улучшить видеотелефон
+ - Подготовить лекции по аэронавтике
+ - Работать над спиртовым двигателем
);
@@ -424,13 +426,13 @@ body > div > div { padding: 20px; }
-#### Write an expression inside JSX curly braces {/*write-an-expression-inside-jsx-curly-braces*/}
+#### Запишите выражение внутри фигурных скобок JSX. {/*write-an-expression-inside-jsx-curly-braces*/}
-In the object below, the full image URL is split into four parts: base URL, `imageId`, `imageSize`, and file extension.
+В объекте ниже полный URL-адрес изображения разбит на четыре части: базовый URL, `imageId`, `imageSize` и расширение файла.
-We want the image URL to combine these attributes together: base URL (always `'https://i.imgur.com/'`), `imageId` (`'7vQD0fP'`), `imageSize` (`'s'`), and file extension (always `'.jpg'`). However, something is wrong with how the `
` tag specifies its `src`.
+Мы хотим объединить эти атрибуты вместе в URL-адрес изображения: базовый URL (всегда `'https://i.imgur.com/'`), `imageId` (`'7vQD0fP'`), `imageSize` (`'s'`) и расширение файла (всегда `'.jpg'`). Однако что-то не так с тем, как тег `
` указывает свой атрибут `src`.
-Can you fix it?
+Можете исправить?
@@ -438,7 +440,7 @@ Can you fix it?
const baseUrl = 'https://i.imgur.com/';
const person = {
- name: 'Gregorio Y. Zara',
+ name: 'Грегорио И. Зара',
imageId: '7vQD0fP',
imageSize: 's',
theme: {
@@ -450,16 +452,16 @@ const person = {
export default function TodoList() {
return (
-
{person.name}'s Todos
+
Список дел {person.name}
- - Improve the videophone
- - Prepare aeronautics lectures
- - Work on the alcohol-fuelled engine
+ - Улучшить видеотелефон
+ - Подготовить лекции по аэронавтике
+ - Работать над спиртовым двигателем
);
@@ -474,22 +476,22 @@ body > div > div { padding: 20px; }
-To check that your fix worked, try changing the value of `imageSize` to `'b'`. The image should resize after your edit.
+Чтобы проверить, что ваши правки сработали, попробуйте изменить значение `imageSize` на `'b'`. После ваших изменений изображение должно изменить свой размер.
-You can write it as `src={baseUrl + person.imageId + person.imageSize + '.jpg'}`.
+Вы можете написать так `src={baseUrl + person.imageId + person.imageSize + '.jpg'}`.
-1. `{` opens the JavaScript expression
-2. `baseUrl + person.imageId + person.imageSize + '.jpg'` produces the correct URL string
-3. `}` closes the JavaScript expression
+1. `{` открывает JavaScript выражение
+2. `baseUrl + person.imageId + person.imageSize + '.jpg'` создаёт правильную строку URL
+3. `}` закрывает JavaScript выражение
```js
const baseUrl = 'https://i.imgur.com/';
const person = {
- name: 'Gregorio Y. Zara',
+ name: 'Грегорио И. Зара',
imageId: '7vQD0fP',
imageSize: 's',
theme: {
@@ -501,16 +503,16 @@ const person = {
export default function TodoList() {
return (
-
{person.name}'s Todos
+
Список дел {person.name}
- - Improve the videophone
- - Prepare aeronautics lectures
- - Work on the alcohol-fuelled engine
+ - Улучшить видеотелефон
+ - Подготовить лекции по аэронавтике
+ - Работать над спиртовым двигателем
);
@@ -525,7 +527,7 @@ body > div > div { padding: 20px; }
-You can also move this expression into a separate function like `getImageUrl` below:
+Вы также можете переместить этот выражение в отдельную функцию, например `getImageUrl` ниже:
@@ -533,7 +535,7 @@ You can also move this expression into a separate function like `getImageUrl` be
import { getImageUrl } from './utils.js'
const person = {
- name: 'Gregorio Y. Zara',
+ name: 'Грегорио И. Зара',
imageId: '7vQD0fP',
imageSize: 's',
theme: {
@@ -545,16 +547,16 @@ const person = {
export default function TodoList() {
return (
-
{person.name}'s Todos
+
Список дел {person.name}
- - Improve the videophone
- - Prepare aeronautics lectures
- - Work on the alcohol-fuelled engine
+ - Улучшить видеотелефон
+ - Подготовить лекции по аэронавтике
+ - Работать над спиртовым двигателем
);
@@ -580,7 +582,7 @@ body > div > div { padding: 20px; }
-Variables and functions can help you keep the markup simple!
+Переменные и функции могут помочь вам упростить разметку!