Компоненты React и синтаксис JSX

В прошлом эпизоде мы перешли на описание элементов в формате JSON. Получилось понятно, но громоздко. Поэтому сегодня для удобства упростим код виджетов, добавив функцию-фабрику создания виртуальных элементов.

Далее исследуем и внедрим оригинальные элементы React и на рендерер ReactDOM. И в итоге разберём и подключим Babel для модификации синтаксиса JavaScript и внедрим синтаксис JSX для удобного HTML-подобного написания компонентов.

  • 00:01:17 Функция createElement
  • 00:02:30 Указание ключа элемента списка
  • 00:04:06 Значение props по умолчанию
  • 00:06:02 Передача дочерних элементов
  • 00:08:34 Переписывание остальных компонентов
  • 00:10:31 Проверка результата
  • 00:11:45 Подключение библиотеки React
  • 00:15:26 Переход на ReactDOM
  • 00:17:29 Задача упрощения кода
  • 00:18:57 Внедрение нового синтаксиса
  • 00:20:39 Кастомный тип скрипта
  • 00:23:55 Преобразование языков
  • 00:25:37 Пример нового синтаксиса
  • 00:27:28 Автоподхват скриптов
  • 00:29:23 Подключение Babel
  • 00:32:20 Синтаксис JSX
  • 00:33:49 Переписывание компонентов на JSX
  • 00:36:12 Обзор результата

На этом с представлением мы разобрались. В следующих эпизодах активно займёмся управлением состоянием.

Скрытый контент (код, слайды, ...) для подписчиков. Открыть →
Дмитрий Елисеев
elisdn.ru
Комментарии (24)
Arunas
2020-09-14 18:51

Спасибо.

Ответить
Руслан
2020-09-15 01:16

Спасибо!

Ответить
Александр Кулик
2020-09-15 20:29

Супер.

Ответить
Aёct'ann
2020-09-16 19:54

Это был шикарный урок, спасибо!

Ответить
Andrey
2020-09-18 14:21

Спасибо!)

Ответить
Александр
2020-10-25 20:03

Спасибо !

Ответить
Алекс
2020-11-10 20:46

Благодарю, оч дохотчиво

Ответить
Артём
2020-11-15 20:48

Офигенно!

Ответить
Денис
2020-11-16 17:56

Спасибо

Ответить
Тимур
2020-12-05 10:12

Красава!

Ответить
Сергей
2021-01-15 16:21

Мне кажется в браузере перегонять все неочень эффективно. Если этого jsx очень много он должен сначала перегнаться в createElement при помощи babel, а потом в json самим реактом. Это только в режиме разработки так и для продакшнеа готовят скомпиленный файл где уже все перегнано? P.S. Спасибо, познавательно!

Ответить
Дмитрий Елисеев
2021-01-16 18:04

Это только у нас мы делаем это в браузере. Так можно делать для своих небольших скриптов.

А при полноценной разработке устанавливают полноценное React-приложение как у нас в проекте аукциона в эпизоде про React с девелоперским сервером и со сборкой через Webpack для продакшена.

Ответить
Сергей
2021-01-18 19:46

Спасибо, не успел еще посмотреть Slim+React. Начну после этого курса

Ответить
kashamamina
2021-03-25 23:30

а почему в гите у вас компонент лота больше не принимает ключ и ничего не делает с ним, хотя в компоненте лотов вы его передаете туда?

Ответить
Дмитрий Елисеев
2021-04-02 11:41

Теперь с ключами работает сам React внутри своего JSON-дерева.
Нам теперь присваивать ключи div-ам не нужно.

Ответить
kashamamina
2021-04-03 00:56

а эти ключи можно как-то отследить вообще, а то я не могу найти информацию о том, где он хранит эти ключи, как он что сравнивает в итоге. вот как он отслеживает изменения если нигде в реальном дереве эти ключи не хранятся?. мне получается просто полагаться на замечания реакта, что там то ты забыл ключи, там-то они не уникальны, а как мне проверить что я нужному элементу присвоил ннужный ключ и т д

Ответить
Дмитрий Елисеев
2021-04-03 08:27

как он отслеживает изменения если нигде в реальном дереве эти ключи не хранятся?

Настоящий ReactDOM намного сложнее и постоянно совершенствуется. Вместо прямого сравнения виртуального дерева с реальным он использует подход со сравнением сохранённого старого и переданного нового виртуальных деревьев, высчитывая разницу и формируя набор изменений. И уже потом во второй фазе применяет этот набор мутаций к реальному дереву. Такой подход производительнее, но чреват риском появления рассинхронизации реального дерева, если что-то пойдёт не так. Так что ключи как раз хранятся и сравниваются в старом и новом виртуальных деревьях, а не в реальном дереве.

Ответить
kashamamina
2021-04-03 23:29

спасибо

Ответить
Дмитрий Елисеев
2021-04-03 08:31

как мне проверить что я нужному элементу присвоил нужный ключ?

React сразу отобразит ошибку в JavaScript-консоли браузера, если у чего-то нет ключа или если вдруг ключи повторяются.

Ответить
Максим
2022-08-05 18:08

Так плавно перейти к Реакту. Снимаю шляпу!

Ответить
Анна
2023-04-14 13:33

Ваау, я столько лет избегала и боялась реакта, а после ваших объяснений все кажется таким простым и понятным! Спасибо вам огромное.

Ответить
Pavell
2023-08-26 13:12

Спасибо! очень полезно.

Ответить
Сергей
2024-01-23 12:35

Это очень круто! Спасибо.

Ответить
Ник
2024-01-25 13:10

пушка

Ответить
Зарегистрируйтесь или войдите чтобы оставить комментарий

Или войти через:

Yandex
MailRu
GitHub
Google