Этот материал находится в платной подписке. Оформи премиум подписку и смотри или слушай React - Полный Курс по React, а также все другие курсы, прямо сейчас!
Премиум
  1. Урок 1. 00:00:48
    Введение
  2. Урок 2. 00:00:42
    Скачайте архив с проектами (ОБНОВЛЯЕТСЯ при расширении курса)
  3. Урок 3. 00:00:52
    Введение в React
  4. Урок 4. 00:03:20
    Предварительные требования к курсу
  5. Урок 5. 00:02:50
    Одностраничные приложения
  6. Урок 6. 00:04:44
    Преимущества и недостатки одностраничных приложений
  7. Урок 7. 00:07:11
    Основы React и взаимодействие с DOM
  8. Урок 8. 00:00:50
    Ключевые понятия в React
  9. Урок 9. 00:04:28
    Компоненты
  10. Урок 10. 00:02:53
    Иерархия и переиспользование компонентов
  11. Урок 11. 00:00:47
    Из чего состоят компоненты React
  12. Урок 12. 00:02:11
    Функциональные и классовые компоненты
  13. Урок 13. 00:05:18
    JSX - JavaScript Syntax Extension
  14. Урок 14. 00:01:56
    Встроенные и пользовательские компоненты
  15. Урок 15. 00:02:01
    Корневой элемент в JSX
  16. Урок 16. 00:02:25
    Свойства и состояние компонентов
  17. Урок 17. 00:02:07
    Родительские и дочерние компоненты
  18. Урок 18. 00:03:06
    Принципы изменения свойств и состояния
  19. Урок 19. 00:00:54
    Ререндеринг компонентов
  20. Урок 20. 00:01:43
    Резюме по ключевым понятиям в React
  21. Урок 21. 00:00:56
    React Hooks
  22. Урок 22. 00:02:17
    Программы для курса
  23. Урок 23. 00:02:25
    Установка и настройка расширения Prettier
  24. Урок 24. 00:03:54
    Проект с Vanilla JS
  25. Урок 25. 00:01:35
    Запуск приложения с помощью Live Server
  26. Урок 26. 00:03:41
    Замена текста кнопки при нажатии с помощью JS
  27. Урок 27. 00:02:06
    Добавление стилей CSS в HTML файле
  28. Урок 28. 00:02:51
    Изменение стилей кнопки при нажатии
  29. Урок 29. 00:01:49
    Анализ HTML страницы в инструментах разработчика Google Chrome
  30. Урок 30. 00:02:24
    Подведение итогов по примеру с Vanilla JS
  31. Урок 31. 00:02:55
    Пример с подключением React в файл HTML
  32. Урок 32. 00:05:40
    Создание h1 элемента с помощью React
  33. Урок 33. 00:02:09
    Подключение библиотеки react-dom
  34. Урок 34. 00:00:52
    Добавление div для монтирования React приложения
  35. Урок 35. 00:02:50
    Монтирование приложения React в DOM с помощью react-dom
  36. Урок 36. 00:01:01
    Проверка успешного добавления React компонента в DOM
  37. Урок 37. 00:03:28
    Проект по добавлению h1 с помощью Vanilla JS
  38. Урок 38. 00:03:12
    Сравнения результатов добавления h1 с React и без него
  39. Урок 39. 00:02:37
    Проект с использованием JSX
  40. Урок 40. 00:01:47
    Почему код JSX не запустился в веб браузере
  41. Урок 41. 00:03:56
    Для чего нужен Babel
  42. Урок 42. 00:05:17
    Трансформация кода JSX с помощью Babel
  43. Урок 43. 00:05:44
    Попытка сконвертировать код JSX без общего корневого тега
  44. Урок 44. 00:01:49
    Подведение итогов по Babel
  45. Урок 45. 00:02:42
    Подключение Babel в файле HTML
  46. Урок 46. 00:00:44
    Задание типа для JavaScript кода для корректной трансформации Babel
  47. Урок 47. 00:01:48
    Запуск приложения с JSX при подключенном Babel
  48. Урок 48. 00:00:51
    Подведение итогов по проекту с JSX и Babel
  49. Урок 49. 00:01:28
    Обзор сайта с документацией по React
  50. Урок 50. 00:03:19
    Проект с React с таким же функционалом как в первом проекте
  51. Урок 51. 00:01:06
    Создание кнопки с помощью React
  52. Урок 52. 00:01:45
    Почему в JSX нужно использовать className вместо class
  53. Урок 53. 00:00:48
    Свойства для кнопки в React
  54. Урок 54. 00:01:31
    Перенос JavaScript кода в отдельный файл
  55. Урок 55. 00:06:37
    Запуск проекта React с помощью Live Server
  56. Урок 56. 00:02:27
    Использование JavaScript в коде JSX
  57. Урок 57. 00:01:29
    Добавление обработчика при нажатии на кнопку
  58. Урок 58. 00:03:25
    Проверка замены текста на кнопке при нажатии
  59. Урок 59. 00:04:16
    Перенос кода JSX в функциональный компонент React
  60. Урок 60. 00:04:59
    Добавление состояния компонента с помощью хука useState
  61. Урок 61. 00:01:32
    Перезаписывать значения переменных из состояния непрямую нельзя
  62. Урок 62. 00:00:52
    Изменение состояния с помощью вызова функции
  63. Урок 63. 00:01:34
    Как меняется реальный DOM при использовании React
  64. Урок 64. 00:02:52
    Чистые функции и функции с побочными эффектами
  65. Урок 65. 00:02:11
    Функции с побочными эффектами в React
  66. Урок 66. 00:04:55
    Изменение стилей кнопки при нажатии с помощью React
  67. Урок 67. 00:03:49
    Подведение итогов по проекту с изменением кнопки с помощью React
  68. Урок 68. 00:05:59
    Добавление свойства для компонента
  69. Урок 69. 00:00:16
    ЗАДАНИЕ - Передать дополнительное свойство
  70. Урок 70. 00:02:12
    РЕШЕНИЕ - Передать дополнительное свойство
  71. Урок 71. 00:04:16
    Курс по предварительным требованиям
  72. Урок 72. 00:04:41
    HTML
  73. Урок 73. 00:06:00
    CSS
  74. Урок 74. 00:02:03
    Переменные в JavaScript
  75. Урок 75. 00:03:39
    Функции
  76. Урок 76. 00:02:45
    Стрелочные функции
  77. Урок 77. 00:03:44
    Операторы
  78. Урок 78. 00:02:26
    Логические операторы
  79. Урок 79. 00:02:07
    Spread оператор
  80. Урок 80. 00:02:49
    Деструктуризация объектов
  81. Урок 81. 00:01:37
    Деструктуризация массивов
  82. Урок 82. 00:02:34
    Деструктуризация параметров функции
  83. Урок 83. 00:02:48
    Тернарный оператор
  84. Урок 84. 00:03:52
    Метод массивов map
  85. Урок 85. 00:03:05
    Модули ES6
  86. Урок 86. 00:04:21
    Классы
  87. Урок 87. 00:02:21
    Промисы и fetch
  88. Урок 88. 00:02:33
    Async и await
  89. Урок 89. 00:02:54
    Именование переменных в React
  90. Урок 90. 00:03:24
    NPM
  91. Урок 91. 00:04:21
    Семантическое управление версиями
  92. Урок 92. 00:01:11
    Скрипты NPM
  93. Урок 93. 00:00:26
    Резюме для курса по предварительным требованиям
  94. Урок 94. 00:04:21
    Create React App
  95. Урок 95. 00:09:45
    Создание приложения с помощью Create React App
  96. Урок 96. 00:16:51
    Обзор содержимого проекта React
  97. Урок 97. 00:02:31
    Переустановка всех зависимостей NPM
  98. Урок 98. 00:02:58
    Запуск приложения с помощью npm start
  99. Урок 99. 00:13:40
    Анализ файлов приложения React
  100. Урок 100. 00:06:23
    Создание production версии с помощью npm run build
  101. Урок 101. 00:07:57
    Пересоздание версии для production
  102. Урок 102. 00:06:09
    Тестирование приложения с помощью npm test
  103. Урок 103. 00:10:29
    Отключение react-scripts с помощью npm run eject
  104. Урок 104. 00:07:29
    Запуск приложения после npm run eject
  105. Урок 105. 00:04:38
    Создание шаблона для последующих проектов
  106. Урок 106. 00:04:51
    Изменения CSS файлов в шаблонном проекте
  107. Урок 107. 00:01:15
    Модификация html файла в шаблонном проекте
  108. Урок 108. 00:05:15
    Замена favicon в шаблонном проекте
  109. Урок 109. 00:01:11
    Подведение итогов по очистке шаблонного приложения
  110. Урок 110. 00:05:26
    Отключение Git в проекте
  111. Урок 111. 00:04:59
    Проект по переиспользованию компонентов
  112. Урок 112. 00:02:49
    Вынос компонента в отдельный файл
  113. Урок 113. 00:02:38
    Что будет если название компонента будет с маленькой буквы
  114. Урок 114. 00:00:36
    ЗАДАНИЕ - Создание еще одного компонента
  115. Урок 115. 00:01:40
    РЕШЕНИЕ - Создание еще одного компонента
  116. Урок 116. 00:06:25
    Проект по использованию props
  117. Урок 117. 00:00:19
    ЗАДАНИЕ - Добавление свойства для компонента
  118. Урок 118. 00:01:03
    РЕШЕНИЕ - Добавление свойства для компонента
  119. Урок 119. 00:03:12
    Деструктуризация свойств
  120. Урок 120. 00:07:50
    Проект по условному возврату JSX
  121. Урок 121. 00:01:19
    Значение true для свойств можно опускать
  122. Урок 122. 00:03:19
    Тернарный оператор в JSX
  123. Урок 123. 00:02:58
    Резюме по проекту с условным возвратом JSX
  124. Урок 124. 00:08:09
    Проект с состоянием компонента
  125. Урок 125. 00:03:54
    Добавление состояния для компонента RandomNum
  126. Урок 126. 00:03:42
    Создание функции по генерации случайного числа
  127. Урок 127. 00:07:42
    Генерирование нового случайного числа при нажатии на кнопку
  128. Урок 128. 00:01:02
    ЗАДАНИЕ - Вынести функцию в отдельный модуль
  129. Урок 129. 00:02:27
    РЕШЕНИЕ - Вынести функцию в отдельный модуль
  130. Урок 130. 00:02:20
    ЗАДАНИЕ - Добавление свойства для случайных чисел
  131. Урок 131. 00:03:26
    РЕШЕНИЕ - Добавление свойства для случайных чисел
  132. Урок 132. 00:03:46
    Резюме по проекту с генерированием случайных чисел
  133. Урок 133. 00:07:40
    Проект по передаче состояния через свойства
  134. Урок 134. 00:02:12
    В состоянии какого компонента сохранять счетчик кликов
  135. Урок 135. 00:02:30
    Добавление состояния со счетчиком кликов
  136. Урок 136. 00:00:19
    ЗАДАНИЕ - Передача счетчика в компонент Counter
  137. Урок 137. 00:02:03
    РЕШЕНИЕ - Передача счетчика в компонент Counter
  138. Урок 138. 00:04:03
    Изменение состояния из дочернего компонента
  139. Урок 139. 00:06:55
    Изолирование состояния в родительском компоненте
  140. Урок 140. 00:02:19
    Резюме по проекту передачи состояния через свойства
  141. Урок 141. 00:03:10
    Очередность рендеринга компонент
  142. Урок 142. 00:02:34
    Обновление состояния происходит асинхронно
  143. Урок 143. 00:04:36
    Расширение React для Google Chrome
  144. Урок 144. 00:00:40
    Завершение проекта по изменению состояния из дочерних компонент
  145. Урок 145. 00:06:21
    Отображение данных из массивов
  146. Урок 146. 00:09:27
    Пример с методом массивов map
  147. Урок 147. 00:04:26
    Добавление key при использовании метода map
  148. Урок 148. 00:01:46
    Проект с итерацией по массиву объектов
  149. Урок 149. 00:03:47
    Генерация случайных данных для проекта
  150. Урок 150. 00:03:50
    Добавление массива объектов в проект
  151. Урок 151. 00:03:38
    Итерация по массиву объектов
  152. Урок 152. 00:00:52
    ЗАДАНИЕ - Передача всех свойств объекта в компонент
  153. Урок 153. 00:04:46
    РЕШЕНИЕ - Передача всех свойств объекта в компонент
  154. Урок 154. 00:06:31
    Использование spread оператора для передачи свойств
  155. Урок 155. 00:03:35
    Отображение данных из объекта в интерфейсе
  156. Урок 156. 00:00:43
    ЗАДАНИЕ - Создание компонента Persons
  157. Урок 157. 00:03:53
    РЕШЕНИЕ - Создание компонента Persons
  158. Урок 158. 00:04:59
    Добавление стилей CSS для карточек
  159. Урок 159. 00:04:58
    Подведение итогов по проекту с массивом объектов
  160. Урок 160. 00:03:15
    Использование оператора И в JSX коде
  161. Урок 161. 00:02:49
    Добавление стилей с помощью свойства style
  162. Урок 162. 00:02:16
    Добавление обработчика нажатия на кнопку Reset
  163. Урок 163. 00:04:52
    Условное отображение блока JSX с помощью оператора И
  164. Урок 164. 00:01:56
    Использование двойного оператора НЕ в JSX
  165. Урок 165. 00:01:01
    Резюме по проекту с оператором И
  166. Урок 166. 00:04:12
    Проект по использованию React Fragment
  167. Урок 167. 00:02:52
    Добавление пустого тега JSX
  168. Урок 168. 00:02:36
    Почему React не нужно импортировать
  169. Урок 169. 00:01:13
    Резюме по использованию React Fragment
  170. Урок 170. 00:07:10
    Проект по неконтролируемым полям ввода
  171. Урок 171. 00:06:26
    Получение значений из полей ввода
  172. Урок 172. 00:02:56
    Подведение итогов по проекту с неконтролируемыми полями ввода
  173. Урок 173. 00:04:24
    Проект по контролируемым полям ввода
  174. Урок 174. 00:03:16
    Добавление обработчиков изменений в полях ввода
  175. Урок 175. 00:00:16
    ЗАДАНИЕ - Контролируемое поле для ввода пароля
  176. Урок 176. 00:00:47
    РЕШЕНИЕ - Контролируемое поле для ввода пароля
  177. Урок 177. 00:02:50
    Данные из полей ввода теперь находятся в состоянии
  178. Урок 178. 00:00:45
    Резюме по проекту с контролируемыми полями ввода
  179. Урок 179. 00:08:45
    Сохранения объекта в состоянии компонента
  180. Урок 180. 00:05:52
    Проект с использованием свойства children
  181. Урок 181. 00:04:01
    Добавление других свойств для компонента Wrapper
  182. Урок 182. 00:02:16
    Резюме по проекту со свойством children
  183. Урок 183. 00:06:50
    Проект по использованию fetch в компонентах
  184. Урок 184. 00:05:15
    Проблема с изменением состояния при использовании fetch
  185. Урок 185. 00:05:17
    Выполнение асинхронных действий с помощью useEffect
  186. Урок 186. 00:01:53
    Добавление зависимостей в useEffect
  187. Урок 187. 00:02:12
    Отображение данных от удаленного сервера в интерфейсе
  188. Урок 188. 00:03:29
    Резюме по проекту с использованием useEffect
  189. Урок 189. 00:07:18
    Проект с массивом постов
  190. Урок 190. 00:00:55
    ЗАДАНИЕ - Получение массива постов через API
  191. Урок 191. 00:06:31
    РЕШЕНИЕ - Получение массива постов через API
  192. Урок 192. 00:01:54
    Добавление обработки ошибок при запросе на сервер
  193. Урок 193. 00:01:11
    ЗАДАНИЕ - Отображение массива постов в интерфейсе
  194. Урок 194. 00:06:06
    РЕШЕНИЕ - Отображение массива постов в интерфейсе
  195. Урок 195. 00:02:26
    Добавление CSS стилей для постов
  196. Урок 196. 00:03:56
    Отображение возможных ошибок в интерфейсе
  197. Урок 197. 00:04:55
    Добавление индикации загрузки данных
  198. Урок 198. 00:00:46
    Добавления заголовка перед списком постов
  199. Урок 199. 00:00:34
    ЗАДАНИЕ - Перенос индикатора загрузки на место постов
  200. Урок 200. 00:01:52
    РЕШЕНИЕ - Перенос индикатора загрузки на место постов
  201. Урок 201. 00:04:47
    Подведение итогов по проекту с массивом постов
  202. Урок 202. 00:03:58
    Проект с async await в useEffect
  203. Урок 203. 00:06:04
    Передача async функции в useEffect
  204. Урок 204. 00:05:14
    Почему в useEffect нельзя передавать асинхронную функцию
  205. Урок 205. 00:01:56
    Создание отдельной async функции
  206. Урок 206. 00:01:59
    Использование IIFE - Immediately Invoked Function Expression
  207. Урок 207. 00:05:49
    Подведение итогов по проекту с async await
  208. Урок 208. 00:02:26
    Проект с модулями CSS
  209. Урок 209. 00:06:10
    Импорт файла с CSS стилями
  210. Урок 210. 00:05:19
    Создание и подключение модуля CSS
  211. Урок 211. 00:07:14
    Использование классов из CSS модуля
  212. Урок 212. 00:03:24
    Подведение итогов по проекту с модулями CSS
  213. Урок 213. 00:05:23
    Обзор финальной версии Todo App
  214. Урок 214. 00:00:57
    Первая версия проекта Todo App
  215. Урок 215. 00:04:42
    Организация файлов в папке components
  216. Урок 216. 00:03:01
    ЗАДАЧИ для первой итерации Todo App
  217. Урок 217. 00:06:12
    Создание заготовок для всех компонентов Todo
  218. Урок 218. 00:00:38
    Функционал добавления новой задачи
  219. Урок 219. 00:08:55
    Создание и использования состояния с массивом задач
  220. Урок 220. 00:11:24
    Добавление задач с помощью формы
  221. Урок 221. 00:02:10
    Проверка добавления и отображения задач
  222. Урок 222. 00:03:47
    Подведение итогов по первой итерации Todo App
  223. Урок 223. 00:08:21
    Добавление стилей CSS для компонента TodoForm
  224. Урок 224. 00:05:37
    Добавление стилей CSS для компонента Todo
  225. Урок 225. 00:00:23
    ЗАДАЧА - Отображение текста об отсутствии задач
  226. Урок 226. 00:01:43
    РЕШЕНИЕ - Отображение текста об отсутствии задач
  227. Урок 227. 00:07:52
    Завершение задачи двойным кликом
  228. Урок 228. 00:05:17
    Добавление иконки возле каждой задачи
  229. Урок 229. 00:05:33
    Подведение итогов по созданию первой версии Todo App
  230. Урок 230. 00:02:16
    Проект по созданию второй версии Todo App
  231. Урок 231. 00:05:41
    Изменение структуры данных на массив объектов
  232. Урок 232. 00:05:38
    Генерация уникальных id для задач
  233. Урок 233. 00:07:43
    Завершение рефакторинга с массивом объектов
  234. Урок 234. 00:08:37
    Добавление и стилизация кнопок удаления и завершения задач
  235. Урок 235. 00:01:46
    Удаление отдельных задач
  236. Урок 236. 00:10:38
    Завершение отдельных задач
  237. Урок 237. 00:04:12
    Условное добавление классов CSS
  238. Урок 238. 00:01:01
    Подведение итогов по удалению и завершению задач
  239. Урок 239. 00:02:15
    Добавление блока с кнопками для всех задач
  240. Урок 240. 00:08:40
    Создание компонента Button
  241. Урок 241. 00:06:25
    Удаление всех или завершенных задач
  242. Урок 242. 00:00:52
    ЗАДАЧА - Скрытие блока с кнопками при отсутствии задач
  243. Урок 243. 00:00:54
    РЕШЕНИЕ - Скрытие блока с кнопками при отсутствии задач
  244. Урок 244. 00:06:33
    Отключение кнопки удаления завершенных задач
  245. Урок 245. 00:06:02
    Использование Button в TodoForm
  246. Урок 246. 00:02:59
    Отображение текста с количеством завершенных задач
  247. Урок 247. 00:04:28
    Подведение итогов по созданию второй версии Todo App
  248. Урок 248. 00:09:42
    Обзор React Router
  249. Урок 249. 00:08:44
    Что такое URL
  250. Урок 250. 00:04:50
    Методы HTTP
  251. Урок 251. 00:09:50
    Обзор навигации на моём сайте
  252. Урок 252. 00:03:20
    Обзор документации по React Router
  253. Урок 253. 00:03:47
    Инсталяция пакета react-router-dom
  254. Урок 254. 00:10:04
    Использование BrowserRouter
  255. Урок 255. 00:05:09
    Использование компонентов Route и Routes
  256. Урок 256. 00:01:06
    Добавление маршрутов about и contacts
  257. Урок 257. 00:02:11
    Маршрут по умолчанию
  258. Урок 258. 00:05:41
    Создание компонентов с помощью React Snippets
  259. Урок 259. 00:03:29
    Свойства компонентов Routes и Route
  260. Урок 260. 00:05:46
    Добавление ссылок на другие страницы
  261. Урок 261. 00:04:44
    Создание компонента Menu
  262. Урок 262. 00:04:20
    Вложенные маршруты и компонент Outlet
  263. Урок 263. 00:02:39
    Создание компонента с общей разметкой
  264. Урок 264. 00:02:28
    Маршруты со свойством index
  265. Урок 265. 00:06:11
    Итоги по роутингу и относительные пути
  266. Урок 266. 00:04:15
    Компонент NavLink и класс active
  267. Урок 267. 00:04:31
    Использование className для NavLink
  268. Урок 268. 00:03:48
    Использование style для NavLink
  269. Урок 269. 00:03:16
    Создание данных для курсов
  270. Урок 270. 00:03:01
    ЗАДАНИЕ - Создание страниц Courses и SingleCourse с навигацией
  271. Урок 271. 00:06:10
    РЕШЕНИЕ - Создание страниц Courses и SingleCourse
  272. Урок 272. 00:09:39
    РЕШЕНИЕ - Добавление ссылок на отдельные курсы
  273. Урок 273. 00:03:29
    РЕШЕНИЕ - Использование параметров в маршрутах и хук useParams
  274. Урок 274. 00:09:34
    РЕШЕНИЕ - Добавление информации на странице курса
  275. Урок 275. 00:01:39
    РЕШЕНИЕ - Подведение итогов
  276. Урок 276. 00:03:59
    Отображение компонента NotFound если курс не найден
  277. Урок 277. 00:10:11
    Перенаправление с помощью хука useNavigate
  278. Урок 278. 00:05:12
    Объект location и хук useLocation
  279. Урок 279. 00:01:52
    ЗАДАНИЕ - Сортировка курсов на основании строки запроса
  280. Урок 280. 00:08:32
    РЕШЕНИЕ - Сортировка курсов на основании строки запроса
  281. Урок 281. 00:10:14
    РЕШЕНИЕ - Функция для сортировки курсов
  282. Урок 282. 00:02:37
    РЕШЕНИЕ - Проверка сортировки при наличии строки запроса
  283. Урок 283. 00:08:28
    РЕШЕНИЕ - Перенаправление на страницу курсов
  284. Урок 284. 00:03:08
    РЕШЕНИЕ - Перенаправление при отсутствии параметра sort
  285. Урок 285. 00:03:17
    Подведение итогов по задаче с сортировкой курсов
  286. Урок 286. 00:06:45
    Введение в Context API
  287. Урок 287. 00:07:33
    Создание контекста
  288. Урок 288. 00:05:54
    Что такое props render в React
  289. Урок 289. 00:01:34
    Итоги по Context Provider и Consumer
  290. Урок 290. 00:04:01
    Использование хука useContext
  291. Урок 291. 00:05:28
    Как React находит Context Provider
  292. Урок 292. 00:05:28
    Контекст в виде объекта
  293. Урок 293. 00:05:06
    Изменение контекста
  294. Урок 294. 00:02:06
    Структура контекста
  295. Урок 295. 00:07:46
    Подведение итогов по Context API
  296. Урок 296. 00:10:52
    Введение в Redux и его составляющие части
  297. Урок 297. 00:02:19
    Как происходит обновление состояния в Redux
  298. Урок 298. 00:04:38
    Чистая функция (pure function)
  299. Урок 299. 00:06:43
    Принцип работы Redux и его преимущества
  300. Урок 300. 00:14:08
    Пример Redux state, reducer и action
  301. Урок 301. 00:15:39
    Метод массивов reduce
  302. Урок 302. 00:11:43
    Принцип работы Redux
  303. Урок 303. 00:04:48
    Создание функции reducer
  304. Урок 304. 00:06:35
    Вызов функции reducer
  305. Урок 305. 00:00:56
    ЗАДАЧА - Удаление всех имен из состояния
  306. Урок 306. 00:02:27
    РЕШЕНИЕ - Удаление всех имен из состояния
  307. Урок 307. 00:06:53
    Замена if на switch и итоги по reducer
  308. Урок 308. 00:03:37
    Создание JavaScript проекта для использования Redux
  309. Урок 309. 00:11:27
    Создание Redux store с помощью Redux Toolkit
  310. Урок 310. 00:10:57
    Отправка действий в Redux store
  311. Урок 311. 00:04:23
    Установка и знакомство с Redux DevTools
  312. Урок 312. 00:14:50
    Взаимодействие с Redux store на веб странице
  313. Урок 313. 00:03:23
    Добавление кнопки для очистки состояния
  314. Урок 314. 00:11:24
    Добавление actionCreators и actionTypes
  315. Урок 315. 00:04:16
    Подведение итогов по проекту JavaScript и Redux
  316. Урок 316. 00:05:17
    Обзор финальной версии Book Library App
  317. Урок 317. 00:09:28
    Создание проекта Book Library App и инициализация Git
  318. Урок 318. 00:06:51
    Запуск базового приложения и первый Git коммит
  319. Урок 319. 00:09:34
    Подготовка компонентов с CSS стилями
  320. Урок 320. 00:11:12
    Создание формы для добавления книги
  321. Урок 321. 00:06:21
    Проверка работы формы и коммит изменений в Git
  322. Урок 322. 00:07:22
    Создание Redux store
  323. Урок 323. 00:14:06
    Создание reducer для массива книг
  324. Урок 324. 00:07:33
    Отправка действий для создания книг с помощью хука useDispatch
  325. Урок 325. 00:10:43
    Получение данных из Redux store с помощью хука useSelector
  326. Урок 326. 00:06:38
    Генерация уникальных id для книг
  327. Урок 327. 00:01:52
    ЗАДАЧА - Удаление книги из списка
  328. Урок 328. 00:13:02
    РЕШЕНИЕ - Удаление книги из списка
  329. Урок 329. 00:11:29
    Добавление массива книг для случайного выбора
  330. Урок 330. 00:14:11
    Иконки и reducer для добавления книги в избранные
  331. Урок 331. 00:07:42
    Отправка действия toggleFavorite в компоненте
  332. Урок 332. 00:07:15
    Перенос создания книги в отдельную функцию
  333. Урок 333. 00:04:26
    Добавление поля ввода для фильтра по заголовку книги
  334. Урок 334. 00:11:14
    Создание reducer для фильтров
  335. Урок 335. 00:05:35
    Откуда берутся действия в Redux slice
  336. Урок 336. 00:05:04
    Экспорт функции для создания действий в filterSlice
  337. Урок 337. 00:07:54
    Отправка действия для поиска по названию книги
  338. Урок 338. 00:06:23
    Синхронизация поля ввода фильтра по названию книги с состоянием
  339. Урок 339. 00:10:05
    Мутирование state при использовании slices
  340. Урок 340. 00:09:26
    Применение фильтра по названию в списке книг
  341. Урок 341. 00:10:05
    Добавление кнопки для очистки фильтров
  342. Урок 342. 00:01:35
    ЗАДАЧА - Фильтр по имени автора
  343. Урок 343. 00:16:05
    РЕШЕНИЕ - Фильтр по имени автора
  344. Урок 344. 00:16:54
    Добавление фильтра для избранных книг
  345. Урок 345. 00:11:48
    Подсветка частей названия и автора при наличии фильтров
  346. Урок 346. 00:02:23
    Перемещение между Git коммитами
  347. Урок 347. 00:01:18
    ЗАДАЧА - Рефакторинг reducer для книг с использованием createSlice
  348. Урок 348. 00:18:55
    РЕШЕНИЕ - Рефакторинг reducer для книг с использованием createSlice
  349. Урок 349. 00:02:10
    Начало создания сервиса API
  350. Урок 350. 00:10:44
    Сохранение коммита сделанного в состоянии Detached HEAD с помощью слияния ветвеи
  351. Урок 351. 00:08:34
    Создание приложения API
  352. Урок 352. 00:13:02
    Получение книги через API в фронтенд приложении
  353. Урок 353. 00:04:26
    Отображение источника добавления книги
  354. Урок 354. 00:11:54
    Что такое thunk function
  355. Урок 355. 00:04:01
    Интеграция thunk function в Redux slice
  356. Урок 356. 00:06:16
    Использование createAsyncThunk
  357. Урок 357. 00:10:34
    Реакция на действия при использовании createAsyncThunk
  358. Урок 358. 00:08:58
    Реагирование на действие в случае отклонения Promise
  359. Урок 359. 00:06:48
    Создание errorSlice
  360. Урок 360. 00:08:54
    Создание компонента Error для отображения ошибок
  361. Урок 361. 00:06:44
    Отображение ошибки если поля названия книги и автора пустые
  362. Урок 362. 00:15:53
    Отображение ошибки в случае неуспешного добавления книги через API
  363. Урок 363. 00:02:56
    Использование объекта вместо функции как значения для extraReducers
  364. Урок 364. 00:08:30
    Добавление отложенного ответа от API сервера
  365. Урок 365. 00:16:34
    Отключение кнопки и изменение текста в процессе загрузки данных
  366. Урок 366. 00:16:49
    Перенос isLoading в Redux store
  367. Урок 367. 00:14:39
    Использование isLoading из Redux store
  368. Урок 368. 00:03:13
    Подведение итогов по приложению React с Redux
  369. Урок 369. 00:04:10
    Введение в HTML
  370. Урок 370. 00:10:26
    Что такое HTML и как клиенты взаимодействуют с серверами
  371. Урок 371. 00:05:22
    Теги HTML
  372. Урок 372. 00:03:46
    Иерархическая структура HTML
  373. Урок 373. 00:06:15
    Закрывающие HTML теги и атрибуты тегов
  374. Урок 374. 00:06:17
    Установка програм для курса по HTML
  375. Урок 375. 00:05:16
    Создание HTML файла
  376. Урок 376. 00:05:26
    Открытие HTML файла в веб браузере
  377. Урок 377. 00:10:25
    Инструменты разработчика в Google Chrome
  378. Урок 378. 00:00:00
    Добавление изображений, заголовков, параграфов и кнопок
  379. Урок 379. 00:11:06
    Подключение библиотеки стилей Bootstrap
  380. Урок 380. 00:16:57
    Использование стилей Bootstrap
  381. Урок 381. 00:09:33
    Добавление внешних ссылок
  382. Урок 382. 00:09:11
    Создание собственного стиля CSS
  383. Урок 383. 00:12:27
    Добавление навигационного меню сверху HTML страницы
  384. Урок 384. 00:06:49
    Добавление собственного логотипа для веб сайта
  385. Урок 385. 00:11:50
    Создание второй HTML страницы для веб сайта
  386. Урок 386. 00:16:31
    Адаптивность отображения карточек
  387. Урок 387. 00:07:35
    Изменение стилей Bootstrap
  388. Урок 388. 00:04:18
    Добавление favicon для веб сайта
  389. Урок 389. 00:03:44
    Резюме курса по HTML