Урок 1. 00:00:58
Welcome to Epic React
Урок 2. 00:01:40
Project READMEs and Pre Reqs
Урок 3. 00:04:45
Clone and Setup
Урок 4. 00:04:37
Running the Epic React Workshop App
Урок 5. 00:05:39
File Structure
Урок 6. 00:03:34
Running Tests
Урок 7. 00:10:03
Example Runthrough
Урок 8. 00:02:38
React Fundamentals Welcome
Урок 9. 00:00:54
Basic JS "Hello World"
Урок 10. 00:02:30
Generate DOM Nodes Extra Credit Solution
Урок 11. 00:01:47
Generate DOM Nodes Extra Extra Credit
Урок 12. 00:01:11
Intro to Raw React APIs
Урок 13. 00:06:38
Raw React APIs Solution
Урок 14. 00:04:59
Nesting Elements Extra Credit Solution
Урок 15. 00:00:50
Break Time
Урок 16. 00:02:07
Using JSX
Урок 17. 00:04:02
Write Markup with JSX Solution
Урок 18. 00:05:12
Interpolate className and Children Extra Credit Solution 01
Урок 19. 00:01:17
Spread Props Extra Credit Solution 02
Урок 20. 00:09:17
Creating Custom Components
Урок 21. 00:03:34
Render JSX From Functions Solution
Урок 22. 00:03:49
React.createElement Extra Credit Solution 01
Урок 23. 00:05:27
JSX Extra Credit Solution 02
Урок 24. 00:06:00
Validation with PropTypes Extra Credit Solution 03
Урок 25. 00:02:12
Use prop-types Package Extra Credit Solution 04
Урок 26. 00:04:19
React Fragments Extra Credit Solution 05
Урок 27. 00:01:13
Styling
Урок 28. 00:03:16
style Prop Solution
Урок 29. 00:06:36
Create a Custom Component Extra Credit Solution 01
Урок 30. 00:02:24
Accept a Size Prop to Encapsulate Styling Extra Credit Solution 02
Урок 31. 00:00:56
Break Time
Урок 32. 00:01:02
Forms
Урок 33. 00:09:25
Form Basics
Урок 34. 00:01:14
Using refs Extra Credit Solution 01
Урок 35. 00:04:29
Validate lower-case Extra Credit Solution 02
Урок 36. 00:04:21
Control the Input Value Extra Credit Solution 03
Урок 37. 00:00:44
Rendering Arrays
Урок 38. 00:04:55
Render Arrays Solution
Урок 39. 00:02:07
Focus demo Extra Credit Solution 01
Урок 40. 00:00:11
React Fundamentals Outro
Урок 41. 00:02:26
React Hooks Welcome
Урок 42. 00:00:47
useState: greeting
Урок 43. 00:03:43
Set State in React Solution
Урок 44. 00:02:09
Set Initial Values Through Props Extra Credit Solution
Урок 45. 00:01:14
useEffect: persistent state
Урок 46. 00:03:31
localStorage useEffect Solution
Урок 47. 00:04:13
Lazy State Initialization Extra Credit Solution 1
Урок 48. 00:05:36
Effect Dependencies Extra Credit Solution 2
Урок 49. 00:05:30
Custom Hook Extra Credit Solution 3
Урок 50. 00:08:12
Flexible localStorage Hook Extra Credit Solution 4
Урок 51. 00:13:06
Hooks Flow
Урок 52. 00:01:12
Lifting state
Урок 53. 00:03:29
Lift State Solution
Урок 54. 00:03:45
Colocate State Extra Credit Solution
Урок 55. 00:01:19
useState: tic tac toe
Урок 56. 00:08:40
Managed and Derived State Solution
Урок 57. 00:02:31
Preserve State in localStorage Extra Credit Solution 1
Урок 58. 00:01:24
useLocalStorageState Custom Hook Extra Credit Solution 2
Урок 59. 00:12:13
Add Game History Feature Extra Credit Solution 3
Урок 60. 00:08:09
Class Refactor
Урок 61. 00:00:59
useRef and useEffect: DOM interaction
Урок 62. 00:05:58
Solution
Урок 63. 00:02:32
Class Refactor
Урок 64. 00:00:52
Break Time
Урок 65. 00:02:22
useEffect: HTTP requests
Урок 66. 00:05:05
Fetch Data
Урок 67. 00:02:24
Handle Errors Extra Credit Solution 1
Урок 68. 00:04:03
Use a status Extra Credit Solution 2
Урок 69. 00:05:39
Store the State in an Object Extra Credit Solution 3
Урок 70. 00:08:20
ErrorBoundary Component Extra Credit Solution 4
Урок 71. 00:04:02
Re-mount the ErrorBoundary Extra Credit Solution 5
Урок 72. 00:01:09
Use react-error-boundary Extra Credit Solution 6
Урок 73. 00:04:47
Reset the ErrorBoundary Extra Credit Solution 7
Урок 74. 00:02:51
use resetKeys Extra Credit Solution 8
Урок 75. 00:00:40
React Hooks Outro
Урок 76. 00:02:11
Advanced React Hooks Welcome
Урок 77. 00:01:03
useReducer: simple Counter
Урок 78. 00:02:41
Simple Counter Solution
Урок 79. 00:01:19
Accept Step as Action Extra Credit Solution 1
Урок 80. 00:02:23
setState with Object Extra Credit Solution 2
Урок 81. 00:02:24
Object or Function Extra Credit Solution 3
Урок 82. 00:03:03
Traditional Dispatch Object Extra Credit Solution 4
Урок 83. 00:01:12
useCallback: custom hooks
Урок 84. 00:08:50
Extract Logic into Hook Solution
Урок 85. 00:04:50
useCallback for Memoization Extra Credit Solution 1
Урок 86. 00:04:27
Return Memoized run Function Extra Credit Solution 2
Урок 87. 00:06:40
Make safeDispatch Extra Credit Solution 3
Урок 88. 00:02:03
useContext: simple Counter
Урок 89. 00:03:49
CountProvider Solution
Урок 90. 00:03:38
Create a Consumer Hook Extra Credit Solution 1
Урок 91. 00:06:13
Caching in Context Provider Extra Credit Solution 2
Урок 92. 00:01:21
useLayoutEffect: auto-growing textarea
Урок 93. 00:02:59
useLayoutEffect Solution
Урок 94. 00:01:46
useImperativeHandle: scroll to top/bottom
Урок 95. 00:05:12
Scroll to Top/Bottom Solution
Урок 96. 00:01:30
useDebugValue: useMedia
Урок 97. 00:01:35
Label useDebugValue Solution
Урок 98. 00:01:51
Use the Format Function Extra Credit Solution 1
Урок 99. 00:00:59
Advanced React Hooks Outro
Урок 100. 00:03:04
Advanced React Patterns Welcome
Урок 101. 00:02:27
Context Module Functions
Урок 102. 00:05:08
Extract Helper Function Solution
Урок 103. 00:02:11
Compound Components
Урок 104. 00:05:54
Refactor Toggle Solution
Урок 105. 00:03:16
Support DOM Component Children Extra Credit Solution 1
Урок 106. 00:01:08
Flexible Compound Components
Урок 107. 00:03:38
Extract State into Context Solution
Урок 108. 00:02:03
Custom Hook Validation Extra Credit Solution 1
Урок 109. 00:01:31
Prop Collections and Getters
Урок 110. 00:01:18
Object of Props Solution
Урок 111. 00:05:57
Prop Getters Extra Credit Solution 1
Урок 112. 00:01:18
State Reducer
Урок 113. 00:02:50
Inversion of Control Solution
Урок 114. 00:02:28
Default State Reducer Extra Credit Solution 1
Урок 115. 00:02:05
State Reducer Action Types Extra Credit Solution 2
Урок 116. 00:04:11
Control Props
Урок 117. 00:08:05
Control State with on and onChange Solution
Урок 118. 00:05:25
Add Read Only Warning Extra Credit Solution 1
Урок 119. 00:04:38
Add a Controlled State Warning Extra Credit Solution 2
Урок 120. 00:05:58
Extract Warnings to a Custom Hook Extra Credit Solution 3
Урок 121. 00:02:40
Don't Warn in Production Extra Credit Solution 4
Урок 122. 00:00:56
Advanced React Patterns Outro
Урок 123. 00:04:57
React Performance Welcome
Урок 124. 00:04:00
Code Splitting
Урок 125. 00:04:17
Code Split Solution
Урок 126. 00:03:51
Eager Loading Extra Credit Solution 1
Урок 127. 00:03:17
Webpack Magic Comments Extra Credit Solution 2
Урок 128. 00:03:34
Suspense Position
Урок 129. 00:05:02
Coverage Tool
Урок 130. 00:04:07
useMemo for Expensive Calculations
Урок 131. 00:05:47
Wrap a Function in useMemo Solution
Урок 132. 00:03:23
Production Mode Extra Credit Solution 1
Урок 133. 00:05:38
getItems Web Worker Extra Credit Solution 2
Урок 134. 00:04:40
React.memo for Reducing re-renders
Урок 135. 00:04:07
Memoize Components Solution
Урок 136. 00:07:04
Custom Comparator Extra Credit Solution 1
Урок 137. 00:02:45
Primitive Values Extra Credit Solution 2
Урок 138. 00:02:12
Window Large Lists with react-virtual
Урок 139. 00:10:39
Render Large Lists Solution
Урок 140. 00:03:51
Optimize Context Value
Урок 141. 00:05:02
Memoize Context Value Solution
Урок 142. 00:05:34
Separate the Contexts Extra Credit Solution 1
Урок 143. 00:02:54
Fix Perf Death by a Thousand Cuts
Урок 144. 00:04:13
Colocate State Solution
Урок 145. 00:06:03
Separate Contexts Extra Credit Solution 1
Урок 146. 00:04:34
Consuming Components Extra Credit Solution 2
Урок 147. 00:04:28
Slice of App State Extra Credit Solution 3
Урок 148. 00:06:43
Use recoil Extra Credit Solution 4
Урок 149. 00:02:29
Production Performance Monitoring
Урок 150. 00:03:37
Add Performance Monitoring Solution
Урок 151. 00:03:55
Use Trace API Extra Credit Solution 1
Урок 152. 00:01:11
React Performance Outro
Урок 153. 00:04:33
Testing React Apps Welcome
Урок 154. 00:02:06
Simple Test with ReactDOM
Урок 155. 00:02:05
Render Counter Component Solution 1
Урок 156. 00:01:54
Test Counter Component Solution 2
Урок 157. 00:02:33
Increment and Decrement Buttons Solution 3
Урок 158. 00:03:59
Cleaning up Test Environments Solution 4
Урок 159. 00:02:14
Add use dispatchEvent Extra Credit Solution 1
Урок 160. 00:01:05
Simple Test with React Testing Library
Урок 161. 00:03:02
Rendering Solution 1
Урок 162. 00:02:46
Firing Events Solution 2
Урок 163. 00:04:13
Accretions Extra Credit Solution 1
Урок 164. 00:01:46
Avoid Implementation Details
Урок 165. 00:04:23
Screen Utility Solution
Урок 166. 00:01:52
Browser Interactions Extra Credit Solution 1
Урок 167. 00:01:04
Form Testing
Урок 168. 00:05:09
Exposes a Debug Method to Test Elements Solution 1
Урок 169. 00:00:00
PLEASE SKIP
Урок 170. 00:02:19
Abstract Variables Extra Credit Solution 1
Урок 171. 00:02:48
Jest Mock Functions Extra Credit Solution 2
Урок 172. 00:01:27
Generate Test Data Extra Credit Solution 3
Урок 173. 00:01:54
Allow for Overrides Extra Credit Solution 4
Урок 174. 00:01:25
Mocking HTTP Requests
Урок 175. 00:04:49
Mock Service Worker Solution 1
Урок 176. 00:00:57
Mocked Responses Solution 2
Урок 177. 00:01:28
Reuse Server Request Handlers Extra Credit Solution 1
Урок 178. 00:02:01
Unhappy Path Extra Credit Solution 2
Урок 179. 00:02:23
Use Inline Snapshots Extra Credit Solution 3
Урок 180. 00:04:50
Use One-off Server Handlers Extra Credit Solution 4
Урок 181. 00:02:18
Mocking Browser APIs and Modules
Урок 182. 00:05:48
Mock Geolocation Solution 1
Урок 183. 00:02:25
Act Function Solution 2
Урок 184. 00:06:42
Mock the module Extra Credit Solution 1
Урок 185. 00:03:01
Context and Custom Render Method
Урок 186. 00:02:51
Wrapper Component Solution
Урок 187. 00:00:50
Dark Theme Extra Credit Solution 1
Урок 188. 00:03:42
Render Method Extra Credit Solution 2
Урок 189. 00:03:34
App Test Utils Extra Credit Solution 3
Урок 190. 00:01:58
Testing Custom Hooks
Урок 191. 00:02:56
Test Functionality of Custom Hook Solution
Урок 192. 00:04:00
Fake Component Extra Credit Solution 1
Урок 193. 00:04:09
Setup Function Extra Credit Solution 2
Урок 194. 00:02:42
Using React-Hooks Testing Library Extra Credit Solution 3
Урок 195. 00:01:06
Testing React Apps Outro
Урок 196. 00:05:38
React Suspense Welcome
Урок 197. 00:01:15
Concurrent Mode
Урок 198. 00:01:14
Simple Data-Fetching
Урок 199. 00:05:04
React.Suspense Solution
Урок 200. 00:03:03
Handle Error with Error Boundary Extra Credit Solution 1
Урок 201. 00:03:57
Make More Generic createResource Extra Credit Solution 2
Урок 202. 00:01:18
Use utils Extra Credit Solution 3
Урок 203. 00:05:01
Render as You Fetch
Урок 204. 00:06:36
Refactor PokemonInfo Solution
Урок 205. 00:02:37
Error Boundary Positioning Extra Credit Solution 1
Урок 206. 00:02:50
useTransition
Урок 207. 00:05:32
startTranistion and isPending Solution
Урок 208. 00:03:16
Use CSS Transitions Extra Credit Solution 1
Урок 209. 00:03:35
Avoid Flash of Loading Content Extra Credit Solution 2
Урок 210. 00:01:48
Cache Resources
Урок 211. 00:03:04
Cache an Object Solution
Урок 212. 00:01:59
Put Cache in Context Extra Credit Solution 1
Урок 213. 00:03:08
Create a Context Provider Extra Credit Solution 2
Урок 214. 00:04:23
Add Cache Timeout Extra Credit Solution 3
Урок 215. 00:04:39
Suspense Image
Урок 216. 00:04:31
Suspend an Image Component Solution
Урок 217. 00:04:27
Avoid Waterfall Extra Credit Solution 1
Урок 218. 00:03:02
Render as You Fetch Extra Credit Solution 2
Урок 219. 00:00:43
Suspense with a Custom Hook
Урок 220. 00:01:47
Create a Custom Suspense Hook Solution
Урок 221. 00:00:35
Reuse Pre-Built Hook Extra Credit Solution 1
Урок 222. 00:02:00
Coordinate Suspending Components with SuspenseList
Урок 223. 00:04:46
Load States Solution
Урок 224. 00:00:45
React Suspense Outro
Урок 225. 00:07:08
Build an Epic React App Welcome
Урок 226. 00:05:39
Walkthrough of Project Setup
Урок 227. 00:00:46
Render a React App
Урок 228. 00:03:02
Render Logo and Title Solution
Урок 229. 00:03:27
Use @reach/dialog Extra Credit Solution 01
Урок 230. 00:04:32
Create a LoginForm Component Extra Credit Solution 02
Урок 231. 00:02:17
Add Styles
Урок 232. 00:04:04
Style a Button with Variants Solution 01
Урок 233. 00:01:21
Style Input and Formgroup Solution 02
Урок 234. 00:03:13
Style with Emotion CSS Prop Solution 03
Урок 235. 00:02:22
Use the Emotion Macro Extra Credit Solution 01
Урок 236. 00:02:37
Use Colors and Media Queries File Extra Credit Solution 02
Урок 237. 00:03:29
Make a Loading Spinner Component Extra Credit Solution 03
Урок 238. 00:01:56
Make HTTP Requests
Урок 239. 00:07:12
Query Data with useEffect Solution 01
Урок 240. 00:02:32
Query Data with useEffect Solution 02
Урок 241. 00:05:08
Handle Failed Requests Extra Credit Solution 01
Урок 242. 00:01:48
Use the useAsync Hook Extra Credit Solution 02
Урок 243. 00:03:43
Authentication
Урок 244. 00:03:14
Wire up Authentication Solution
Урок 245. 00:04:57
User Data on Page Load Extra Credit Solution 01
Урок 246. 00:04:32
Use useAsync Extra Credit Solution 02
Урок 247. 00:01:46
Automatically Logout on 401 Extra Credit Solution 03
Урок 248. 00:01:51
Support Posting Data Extra Credit Solution 04
Урок 249. 00:01:44
Routing
Урок 250. 00:07:52
Handle Routing Solution
Урок 251. 00:03:57
Handle URL Redirects Extra Credit Solution-01
Урок 252. 00:01:40
Add useMatch to Highlight the Active Nav Item Extra Credit Solution-02
Урок 253. 00:03:48
Cache Management
Урок 254. 00:04:31
Create listItems with React Query useMutation Solution 01
Урок 255. 00:05:30
View listItems with React Query useQuery Solution 02
Урок 256. 00:01:49
Remove listItems with useMutation Solution 03
Урок 257. 00:03:07
Update listItems with useMutations Solution 04
Урок 258. 00:01:33
View listItem Data in BookRow with useQuery Solution 05
Урок 259. 00:01:46
Update a Book Rating with useMutation Solution 06
Урок 260. 00:02:39
Refactor useAsync to useQuery Solution 07
Урок 261. 00:03:46
Load and Persist Book Data with useQuery Solution 08
Урок 262. 00:01:23
Query with useQuery for listItems in ListItemList Solution 09
Урок 263. 00:01:58
Clear queryCache on User Logout Solution 10
Урок 264. 00:03:38
Create useBookSearch Custom Hook Extra Credit Solution 01-01
Урок 265. 00:01:33
Create a useBook Custom Hook Extra Credit Solution 01-02
Урок 266. 00:03:50
Create useListItem(s) Custom Hook Extra Credit Solution 01-03
Урок 267. 00:02:04
Reuse Mutation Logic in a Custom Extra Credit Solution 01-04
Урок 268. 00:01:13
Reuse Custom Hooks to Reduce Code Extra Credit Solution 01-05
Урок 269. 00:02:10
Create and Remove Custom Hook Extra Credit Solution 01-06
Урок 270. 00:04:16
useMatch: highlight active nav item Extra Credit Solution 02
Урок 271. 00:04:01
Show Error When Request Fails Extra Credit Solution 03-01
Урок 272. 00:04:11
React Query Custom Error Handling Extra Credit Solution 03-02
Урок 273. 00:01:11
Add a Loading Spinner for the Notes Extra Credit Solution 04
Урок 274. 00:04:28
Prefetch the Book Search Query Extra Credit Solution 05
Урок 275. 00:04:04
Add Books to the Query Cache Extra Credit Solution 06
Урок 276. 00:05:37
Add Optimistic Updates and Recovery Extra Credit Solution 07
Урок 277. 00:01:25
Context
Урок 278. 00:03:04
Create and Provide an AuthContext Solution 01
Урок 279. 00:02:21
Grab a Value from Context in a Hook Solution 02
Урок 280. 00:05:16
Use Context Value in ListItem Hooks and AuthenticatedApp Solution 03
Урок 281. 00:02:53
Expose User Context Value to refetchBookSearchQuery Solution 04
Урок 282. 00:02:50
Create a useAuth Hook Extra Credit Solution 01
Урок 283. 00:05:28
Create an AuthProvider Component Extra Credit Solution 02
Урок 284. 00:02:35
Colocate Global Providers Extra Credit Solution 03
Урок 285. 00:04:08
Create a useClient Hook Extra Credit Solution 04
Урок 286. 00:01:09
Compound Components
Урок 287. 00:08:35
Create Compound Components for a Flexible Modal Solution
Урок 288. 00:03:40
Add callAll Extra Credit Solution 01
Урок 289. 00:03:39
Create ModalContentsBase Extra Credit Solution 02
Урок 290. 00:02:20
Performance
Урок 291. 00:07:54
Improve the Time to First Meaningful Paint Solution
Урок 292. 00:03:17
Prefetch the Authenticated App Extra Credit Solution 01
Урок 293. 00:05:58
Memoize Context Extra Credit Solution 02
Урок 294. 00:06:45
Custom React.Profiler to Moninitor App Extra Credit Solution 03-01
Урок 295. 00:03:34
Add Metadata and Profile Book Screen Extra Credit Solution 03-02
Урок 296. 00:03:03
List Item List and Discover Sceen List Extra Credit Solution 03-03
Урок 297. 00:02:28
Add Profiling to Production Builds Extra Credit Solution 03-04
Урок 298. 00:03:47
Add Interaction Tracing Extra Credit Solution 04-01
Урок 299. 00:03:44
Profile All Updates in an Interaction Extra Credit Solution 04-02
Урок 300. 00:01:11
Render as You Fetch
Урок 301. 00:03:24
Fetch User before AuthProvider Mounts Solution
Урок 302. 00:02:46
Preload All Initial Data Extra Credit Solution 01
Урок 303. 00:01:39
Unit Testing
Урок 304. 00:01:39
Test formatDate Solution 01
Урок 305. 00:06:16
Set up a Server to Test Requests Solution 02
Урок 306. 00:01:48
Test if a Request has an Auth Header Solution 03
Урок 307. 00:01:37
Client Request Config Overrides Solution 04
Урок 308. 00:02:22
POST by Default when Body Present and Stringified Solution 05
Урок 309. 00:03:41
Automatic Log Out on 401 Error Extra Credit Solution 01-01
Урок 310. 00:02:18
Ensure Promise Rejects on Error Extra Credit Solution 01-02
Урок 311. 00:01:02
Use setupTests.js Extra Credit Solution 02
Урок 312. 00:01:32
Testing Hooks and Components
Урок 313. 00:06:08
Modal Compound Components Solution 01
Урок 314. 00:02:36
Set up useAsync Test with renderHook Solution 02
Урок 315. 00:02:21
Wrap an act around an async Function Solution 03
Урок 316. 00:03:21
Add an async act to Resolve a Promise Solution 04
Урок 317. 00:01:15
Reset React State in a Test Solution 05
Урок 318. 00:01:43
Call Run with a Promise That Resolved Solution 06
Урок 319. 00:01:27
Can Specify an Initial State Solution 07
Урок 320. 00:02:03
Can Set the Data Solution 08
Урок 321. 00:03:32
No State Updates if Unmounted Solution 09
Урок 322. 00:01:21
Call run without Promise Errors Solution 10
Урок 323. 00:03:44
AHA Testing Extra Credit Solution 01
Урок 324. 00:02:57
Integration Testing
Урок 325. 00:02:35
Render the Application with AppProviders Solution 01
Урок 326. 00:00:57
Wait for Loading Element to Be Removed Solution 02
Урок 327. 00:03:49
Reverse-engineer AuthProvider and Log In Solution 03
Урок 328. 00:04:54
Render a Book Page in a Test Solution 04
Урок 329. 00:06:45
Test What UI Elements are Present Solution 05
Урок 330. 00:00:49
Isolate Tests by Cleaning up State and Cache Solution 06
Урок 331. 00:06:59
Create Mock msw Server Extra Credit Solution 01
Урок 332. 00:05:33
Write Second Integration Test Extra Credit Solution 02
Урок 333. 00:01:29
Abstract Functionality Extra Credit Solution 03-01
Урок 334. 00:06:24
Custom Render Function Extra Credit Solution 03-02
Урок 335. 00:03:29
Global Utils Extra Credit Solution 04
Урок 336. 00:03:50
Can Remove List Item for Book Extra Credit Solution 05-01
Урок 337. 00:03:28
Can Mark a List Item as Read Extra Credit Solution 05-02
Урок 338. 00:04:55
Can Edit a Note Extra Credit Solution 05-03
Урок 339. 00:03:04
Use Jest Fake Timers Extra Credit Solution 05-04
Урок 340. 00:01:55
Set up Mock Profiler for Tests Extra Credit Solution 05-05
Урок 341. 00:07:44
Create Component-Specific Utility Extra Credit Solution 06
Урок 342. 00:02:35
Show Error when Load Fails Extra Credit Solution 07-01
Урок 343. 00:02:55
Scope Hooks to Describe Block Extra Credit Solution 07-02
Урок 344. 00:04:16
Update Failures are Displayed Extra Credit Solution 07-03
Урок 345. 00:01:42
E2E Testing
Урок 346. 00:03:55
Register a User in Cypress Solution 01
Урок 347. 00:04:00
Find and Add a Book to Reading List Solution 02
Урок 348. 00:04:06
Mark Book as Read and Rate Solution 03
Урок 349. 00:02:21
Remove Book from Reading List Solution 04
Урок 350. 00:01:34
Build an Epic React App Outro
а так, лучше, все же, использовать машинный перевод от Яндекса, это вам будет стоить на порядки дешевле, качество сейчас там на уровне, также, было бы хорошо, если бы прикладывались файлы субтитров.
Тут главное - корректный перевод, то есть это точно должен быть не машинный, ну или машинный с ручной корректировкой человеком, который разбирается в теме.
А уж если будет еще озвучка, то конечно это мегаклассно!