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