Khóa học giá hời xin hân hạnh chia sẻ Khóa Học ReactJS cơ bản đến nâng cao dành cho người mới bắt đầu – Evondev
Xin lưu ý: Nếu bạn có điều kiện, hãy mua khóa học gốc để ủng hộ tác giả và đội ngũ làm khóa học để họ có thể mang tới nhiều hơn những khóa học chất lượng nhé!
Tóm Tắt Khóa Học:
Với sự phổ biến của ReactJS ngày nay và việc nhiều công ty sử dụng ReactJS, việc đạt được hiểu biết sâu về ReactJS sẽ giúp bạn có cơ hội tuyển dụng tốt hơn và trở thành một Chuyên gia Phát triển Frontend chuyên nghiệp. Khóa học của chúng tôi cung cấp hàng trăm video học về ReactJS, giúp bạn thu thập đầy đủ kiến thức cần thiết để đạt được thành tựu đáng kể trong sự nghiệp. Hãy tham gia khóa học của chúng tôi để trở thành một Chuyên gia thực sự về ReactJS.
Với khóa học này, bạn sẽ học được:
Khóa học ReactJS chuyên sâu – Học và Thực Hành:
- Nắm vững kiến thức cơ bản về ReactJS như props, state, components.
- Học cách quản lý Trạng thái (State) và tối ưu hiệu suất trong các thành phần ReactJS.
- Thành thạo các hooks trong React và biết cách tối ưu hoá các Component.
- Học cách áp dụng nhiều kiểu kiến trúc giao diện khác nhau trong ReactJS như styled-components, tailwindcss, sass, module css.
- Nhận hỗ trợ từ nhóm khi gặp khó khăn trong quá trình học.
- Mỗi chương luôn đi kèm với các bài tập giúp bạn học và thực hành đồng thời để nắm vững kiến thức.
- Học cách đặt tên chuẩn và khắc phục các lỗi phổ biến.
- Thực hành thông qua nhiều dự án hấp dẫn được hướng dẫn một cách chi tiết và dễ hiểu từ đầu đến cuối.
- Thuần thục các kiến thức nâng cao như High Order Component, Compound Component, Context API, Portal.
- Khám phá thêm nhiều kiến thức thú vị và hữu ích khác trong khóa học ReactJS chuyên sâu.
Còn chần chừ gì nữa? hãy đăng ký ngay khóa học ReactJS chuyên sâu để trở thành một Chuyên gia phát triển phần mềm chuyên nghiệp!
Danh sách bài học:
Cảm ơn bạn vì đã chăm chỉ học tập. Khóa học giá hời xin chúc bạn học tập tốt và áp dụng hiệu quả những kiến thức đã học để tạo ra thêm nhiều giá trị cho bản thân, tổ chức, cộng đồng và xã hội nhé!Chương 1: Giới thiệu khóa học
Intro (Rất quan trọng)
Cài đặt vscode extensions và settings
Cài đặt NodeJS và Git scm
Cài đặt react dev tools và redux dev tools
Cách đạt hiệu quả cao khi học khóa học
Giới thiệu outline khóa học
Chương 2: React cơ bản
Bài 1: Giới thiệu chương 2
Bài 2: ReactJS là gì ?
Bài 3: Tìm hiểu Create React App
Bài 4: Cài đặt CRA
Bài 5: JSX là gì ?
Bài 6: Tìm hiểu JSX phần 1
Bài 7: Tìm hiểu JSX phần 2
Bài 8: Tìm hiểu JSX phần cuối
Bài 9: Components là gì ?
Bài 10: Props là gì ?
Bài 11: Thực hành với Props cơ bản
Bài 12: Tìm hiểu 2 cách styles cơ bản trong React
Bài 13: Rendering list phần 1
Bài 14: Rendering list phần 2
Bài 15: Rendering list phần 3
Bài 16: Refactor code
Bài 17: Tìm hiểu props children
Bài 18: Recap chương 2
Chương 3: Tìm hiểu react hook useState
Bài 19: Giới thiệu chương 3
Bài 20: State là gì ?
Bài 21: stateless và stateful functional components
Bài 22: Tìm hiểu useState cơ bản phần 1
Bài 23: Tìm hiểu useState cơ bản phần 2
Bài 24: Tìm hiểu useState cơ bản phần 3
Bài 25: Tìm hiểu useState cơ bản phần 4
Bài 26: Những nguyên tắc khi sử dụng hook cần nắm
Bài 27: Stale state là gì ?
Bài 28: Thực hành game Tictactoe phần 1
Bài 29: Thực hành game Tictactoe phần 2
Bài 30: Thực hành game Tictactoe phần 3
Bài 31: Thực hành game Tictactoe phần 4
Bài 32: Thực hành game Tictactoe phần 5
Bài 33: Xử lý state phức tạp như thế nào ?
Bài 34: Tìm hiểu useReducer phần 1
Bài 35: Tìm hiểu useReducer phần 2
Bài 36: Tìm hiểu useReducer phần 3
Bài 37: React cập nhật state như thế nào ?
Bài 38: Recap chương 3
Chương 4: Styling trong React
Bài 39: Giới thiệu chương 4
Bài 40: Cài đặt và sử dụng Sass cơ bản
Bài 41: Tìm hiểu CSS Module
Bài 42: Cài đặt thư viện styled-components
Bài 43: Phân tích giao diện Card component
Bài 44: Sử dụng styled-components phần 1
Bài 45: Sử dụng styled-components phần 2
Bài 46: Sử dụng styled-components phần 3
Bài 47: Tìm hiểu props trong styled-components
Bài 48: Cách tạo Global styles trong styled-components
Bài 49: Tìm hiểu một cách sử dụng styled-components khác
Bài 50: So sánh 2 cách dùng của styled-components
Bài 51: Tìm hiểu Theme trong styled-components
Bài 52: Giới thiệu và cài đặt tailwindcss
Bài 52.1: Cập nhật CRA và TailwindCSS version 3(quan trọng)
Bài 52.2: Hướng dẫn sửa lỗi TailwindCSS không tạo ra class
Bài 52.3: Lưu ý quan trọng phải xem
Bài 53: Sử dụng tailwindcss phần 1
Bài 54: Cài đặt jitmode trong tailwindcss
Bài 55: Sử dụng tailwindcss phần 2
Bài 56: Xử lý props trong tailwindcss như thế nào
Bài 57: Recap chương 4
Chương 5: Tìm hiểu React hook useEffect
Bài 58: Giới thiệu chương 5
Bài 59: Cách dùng useEffect cơ bản
Bài 60: Thực hành với API Picsum photos sử dụng useEffect phần 1
Bài 61: Thực hành với API Picsum photos sử dụng useEffect phần 2
Bài 62: Thực hành với API Picsum photos sử dụng useEffect phần 3
Bài 63: Thực hành với API Picsum photos sử dụng useEffect phần 4
Bài 64: Thực hành với API Picsum photos sử dụng useEffect phần 5
Bài 65: Refactor code sang async function
Bài 66: Tìm hiểu dependency trong useEffect phần 1
Bài 67: Tìm hiểu dependency trong useEffect phần 2
Bài 68: Tìm hiểu dependency trong useEffect phần 3
Bài 69: Tìm hiểu cleanup function trong useEffect
Bài 70: Sử dụng event listener trong useEffect như thế nào ?
Bài 71: Tối ưu bài tập API Picsum Photos
Bài 72: Bài tập HackerNews API phần 1
Bài 73: Bài tập HackerNews API phần 2
Bài 74: Bài tập HackerNews API phần 3
Bài 75: Bài tập HackerNews API phần 4
Bài 76: Tối ưu giao diện HackerNews API
Bài 77: Bài tập HackerNews API – Fetching dữ liệu với button
Bài 78: Bài tập HackerNews API – Sử dụng useReducer phần 1
Bài 79: Bài tập HackerNews API – Sử dụng useReducer phần 2
Bài 80: Bài tập HackerNews API – Sử dụng useReducer phần cuối
Bài 81: Recap chương 5
Chương 6: ref và custom hooks
Bài 82: Giới thiệu chương 6
Bài 83: Tìm hiểu về ref cơ bản
Bài 84: Sự khác nhau giữa hook useRef và hook useState
Bài 85: Bài tập đồng hồ bấm giờ đơn giản
Bài 86: Bài tập Input Auto Focus
Bài 87: Bài tập Textarea Resize phần 1
Bài 88: Bài tập Textarea Resize phần 2
Bài 89: Bài tập Dropdown phần 1
Bài 90: Bài tập Dropdown phần 2
Bài 92: Custom hook là gì ?
Bài 93: Viết custom hook useLinkNewTab phần 1
Bài 94: Viết custom hook useLinkNewTab phần 2
Bài 95: Viết custom hook useHover phần 1
Bài 96: Viết custom hook useHover phần 2
Bài 97: Xử lý unmounted component với ref phần 1
Bài 98: Xử lý unmounted component với ref phần 2
Bài 99: Tối ưu bài tập HackerNewsAPI với custom hook phần 1
Bài 100: Tối ưu bài tập HackerNewsAPI với custom hook phần 2
Bài 101: Tối ưu bài tập HackerNewsAPI với custom hook phần 3
Bài 102: Viết custom hook useClickOutSide
Bài 103: Bài tập SidebarMenu phần 1
Bài 104: Bài tập SidebarMenu phần 2
Bài 105: Recap chương 6
Chương 7: Form toàn tập
Bài 106: Giới thiệu chương 7
Bài 107: Tìm hiểu Form cơ bản trong React phần 1
Bài 108: Tìm hiểu Form cơ bản trong React phần 2
Bài 109: Tìm hiểu Form cơ bản trong React phần 3
Bài 110: Tìm hiểu Form cơ bản trong React phần 4
Bài 111: Tìm hiểu Form cơ bản trong React phần 5
Bài 112: Bài tập Movie Search App – Đăng ký API
Bài 113: Bài tập Movie Search App – Fetching dữ liệu
Bài 114: Bài tập Movie Search App – Styling giao diện
Bài 115: Bài tập Movie Search App – Hiển thị dữ liệu
Bài 116: Bài tập Movie Search App – Hiển thị dữ liệu tiếp theo
Bài 117: Bài tập Movie Search App – Chức năng tìm kiếm
Bài 118: Bài tập Movie Search App – Sử dụng kỹ thuật debounce
Bài 119: Bài tập Movie Search App – Giải thích hook useDebounce
Bài 120: Bài tập Movie Search App – Giới thiệu về loading skeleton
Bài 121: Bài tập Movie Search App – Thêm loading skeleton
Bài 122: Setup giao diện form cơ bản
Bài 123: Cài đặt và sử dụng formik vào form
Bài 124: Validation cơ bản với formik
Bài 125: Validation cơ bản với formik tiếp theo
Bài 126: Validation với thư viện Yup
Bài 127: Tối ưu source code
Bài 128: Bài tập SignUpForm – Phân tích và code giao diện
Bài 129: Bài tập SignUpForm – Chia nhỏ và tái sử dụng components
Bài 130: Bài tập SignUpForm – Tìm hiểu và sử dụng hook useField
Bài 131: Bài tập SignUpForm – Tối ưu components và validtion
Bài 132: Bài tập SignUpForm – Reset form và submitting
Bài 133: Cài đặt thư viện React Hook Form
Bài 134: Sử dụng React Hook Form cơ bản
Bài 135: Validation cơ bản
Bài 136: Sử dụng Yup cơ bản
Bài 137: Các trạng thái trong React Hook Form p1
Bài 138: Các trạng thái trong React Hook Form p2
Bài 139: Tìm hiểu phương thức watch
Bài 140: Tìm hiểu phương thức Reset
Bài 141: Tìm hiểu phương thức setValues và setFocus
Bài 142: Tìm hiểu Controller
Bài 143: Tìm hiểu useController
Bài 144: Tìm hiểu Control
Bài 145: Recap formik và React Hook Form(RHF)
Bài 146: Thực hành Register Form với RHF – Setup
Bài 147: Thực hành Register Form với RHF – Styling
Bài 148: Thực hành Register Form với RHF – Custom Input
Bài 149: Thực hành Register Form với RHF – Custom Radio
Bài 150: Thực hành Register Form với RHF – Custom Checkboxref
Bài 151: Thực hành Register Form với RHF – Custom Dropdown phần 1
Bài 152: Thực hành Register Form với RHF – Custom Dropdown phần 2
Bài 153: Thực hành Register Form với RHF – Custom Dropdown phần 3
Bài 154: Thực hành Register Form với RHF – Validation phần 1
Bài 155: Thực hành Register Form với RHF – Validation phần 2
Bài 156: Thực hành Register Form với RHF – Form submitting
Bài 157: Thực hành Register Form với RHF – Form reset phần 1
Bài 158: Thực hành Register Form với RHF – Form reset phần 2
Bài 159: Thực hành Register Form với Formik – Setup
Bài 160: Thực hành Register Form với Formik – Setup phần 2
Bài 161: Thực hành Register Form với Formik – Validation
Bài 162: Thực hành Register Form với Formik – Custom Input
Bài 163: Thực hành Register Form với Formik – Custom Radio
Bài 164: Thực hành Register Form với Formik – Custom Checkbox
Bài 165: Thực hành Register Form với Formik – Custom Dropdown
Bài 166: Thực hành Register Form với Formik – Lấy giá trị từ Dropdown
Bài 167: Thực hành Register Form với Formik – Reset form
Bài 168: So sánh formik và react-hook-form
Chương 8: Fragments, Portal
Bài 169: Fragments
Bài 170: Vấn đề hay gặp khi làm việc với Modal
Bài 171: Tìm hiểu và sử dụng createPortal
Bài 172: Styling Modal
Bài 173: Thêm chức năng cho Modal
Bài 174: Xử lý overflow cho Dropdown với createPortal
Bài 175: Tooltip challenge
Bài 176: Giải bài tooltip phần 1
Bài 177: Giải bài tooltip phần 2
Bài 178: Bắt lỗi Component với react-error-boundary
Bài 179: Kiểm tra Props của Component với PropTypes
Bài 180: Tối ưu code Portal nâng cao phần 1
Bài 181: Tối ưu code Portal nâng cao phần 2
Bài 182: Tối ưu code Portal nâng cao phần 3
Bài 183: Tối ưu code Portal nâng cao phần 4
Bài 184: Tối ưu code Portal nâng cao phần 5
Bài 185: Tối ưu component Tooltips
Bài 186: Tối ưu component Portal
Bài 187: Recap kiến thức Portal
Chương 9: Context và Router
Bài 188: Giới thiệu Context
Bài 189: Vấn đề thực tế
Bài 190: Thực hành CountContext phần 1
Bài 191: Thực hành CountContext phần 2
Bài 192: Thực hành AuthContext phần 1
Bài 193: Thực hành AuthContext phần 2
Bài 194: Thực hành GalleryContext – Setup
Bài 195: Thực hành GalleryContext – Styling
Bài 196: Thực hành GalleryContext – toggleFavorite
Bài 197: Thực hành GalleryContext – addToCart
Bài 198: Thực hành GalleryContext – removeFromCart
Bài 199: Thực hành GalleryContext – Display count
Bài 200: Thực hành Gallery Context – usehooks
Bài 201: Thực hành Gallery Context – localStorage
Bài 202: Tìm hiểu React Router cơ bản phần 1
Bài 203: Tìm hiểu React Router cơ bản phần 2
Bài 204: Tìm hiểu React Router cơ bản phần 3
Bài 205: Tìm hiểu React Router cơ bản phần 4
Chương 10: Dự án React Simple Movie
Bài 206: Thiết lập dự án
Bài 207: Code giao diện menu và banner
Bài 208: Code giao diện movie card
Bài 209: Tìm hiểu và sử dụng thư viện Swiper, SWR
Bài 210: Tạo component MovieList và fetching dữ liệu
Bài 211: Tạo component Banner
Bài 212: Thiết lập Routes cho dự án
Bài 213: Fetching dữ liệu trang danh sách phim
Bài 214: Trang chi tiết phim – Fetching dữ liệu
Bài 215: Trang chi tiết phim – Code giao diện
Bài 216: Trang chi tiết phim – Fetching dữ liệu diễn viên
Bài 217: Trang chi tiết phim – Fetching dữ liệu trailers và similar
Bài 218: Thêm chức năng tìm kiếm phim
Bài 219: Thêm Loading
Bài 220: Thêm chức năng phân trang – Phân tích chức năng
Bài 221: Thêm chức năng phân trang – Sử dụng react-paginate
Bài 222: Thêm chức năng phân trang – Tối ưu giao diện
Bài 223: Tối ưu component Button
Bài 224: Tối ưu API Config
Bài 225: Tối ưu import path phần 1
Bài 226: Tối ưu import path phần 2
Bài 227: Recap lại kiến thức đã học và áp dụng
Bài 228: Code splitting Routes
Bài 229: Tối ưu source code phần 1
Bài 230: Tối ưu source code phần 2
Bài 231: Tối ưu source code phần 3
Bài 232: Chức năng Load more phần 1
Bài 233: Chức năng Load more phần 2
Bài 234: Chúc mừng bạn đã hoàn thành dự án
Chương 11: Advanced React
Bài 235: Giới thiệu chương 11
Bài 236: Higher order components(hocs) phần 1
Bài 237: Higher order components(hocs) phần 2
Bài 238: Recap HOCs
Bài 239: Render props phần 1
Bài 240: Render props phần 2
Bài 241: Recap render props
Bài 242: Custom hooks
Bài 243: React composition(Compound Component) phần 1
Bài 244: React composition(Compound Component) phần 2
Bài 245: React composition(Compound Component) phần 3
Bài 246: Prop collections
Bài 247: Prop getters
Bài 248: Control props phần 1
Bài 249: Control props phần 2
Bài 250: Control props phần 3
Bài 251: State reducer phần 1
Bài 252: State reducer phần 2
Bài 253: State reducer phần 3
Bài 254: Inversion of control phần 1
Bài 255: Inversion of control phần 2
Bài 256: Inversion of control phần 3
Bài 257: Inversion of control phần 4
Bài 258: Tối ưu Component re-render với useMemo, useCallback và React.memo
Bài 259: Recap chương 11
Chương 12: Firebase cơ bản
Bài 260: Giới thiệu và thiết lập Firebase
Bài 261: Thiết lập Firestore Database
Bài 262: Truy xuất dữ liệu Collection với getDocs
Bài 263: Thêm dữ liệu vào Collection với addDoc
Bài 264: Xóa dữ liệu trong Collection với deleteDoc
Bài 265: Hiển thị dữ liệu realtime với onSnapshot
Bài 266: Cập nhật dữ liệu với updateDoc
Bài 267: Truy xuất 1 Document với getDoc
Bài 268: Truy vấn dữ liệu nâng cao với Firestore Queries
Bài 269: Giới thiệu và cài đặt Firebase Authentication
Bài 270: Thực hiện chức năng đăng ký với Firebase Auth
Bài 271: Thực hiện chức năng đăng xuất với Firebase Auth
Bài 272: Hiển thị displayName và tự động thêm Collection vào Firestore
Bài 273: Thực hiện chức năng đăng nhập với Firebase Auth
Chương 13: Dự án Monkey Blogging
Bài 274: Giới thiệu chương 13
Bài 275: Thiết lập Firebase
Bài 276: Thiết lập Routes
Bài 277: Tạo authContext
Bài 278: Code giao diện trang SignUp phần 1
Bài 279: Code giao diện trang SignUp phần 2
Bài 280: Label component
Bài 281: Input component phần 1
Bài 282: Input component phần 2
Bài 283: Field component
Bài 284: Xử lý toggle password
Bài 285: Button component phần 1
Bài 286: Button component phần 2
Bài 287: Xử lý Form Validation cho trang SignUp phần 1
Bài 288: Xử lý Form Validation cho trang SignUp phần 2
Bài 289: Hoàn thành chức năng đăng ký(SignUp Authentication)
Bài 290: Thêm PropTypes cho Button component
Bài 291: Code giao diện trang đăng nhập(SignIn)
Bài 292: Hoàn thành chức năng đăng nhập(SignIn Authentication)
Bài 293: Code giao diện block Header phần 1
Bài 294: Code giao diện trang 404
Bài 295: Code giao diện block Header phần 2
Bài 296: Code giao diện block Banner
Bài 297: Lưu ý về giao diện nên xem
Bài 298: Tạo và tối ưu PostCategory component
Bài 299: Tạo và tối ưu PostTitle component
Bài 300: Tạo và tối ưu PostMeta component
Bài 301: Tạo và tối ưu PostImage component
Bài 302: Tối ưu chức năng Toggle Password
Bài 303: Lưu ý về giao diện
Bài 304: Phân tích Database
Bài 305: Chức năng thêm bài viết – Tổng quan
Bài 306: Chức năng thêm bài viết – Upload hình ảnh
Bài 307: Chức năng thêm bài viết – Tối ưu giao diện Upload
Bài 308: Chức năng thêm bài viết – Xóa hình ảnh và tối ưu logic
Bài 309: Chức năng thêm bài viết – Tối ưu code Upload hình ảnh
Bài 310: Chức năng thêm bài viết – Thêm toggle bài viết nổi bật
Bài 311: Chức năng thêm bài viết – Truy vấn danh mục(category)
Bài 312: Chức năng thêm bài viết – Chọn danh mục từ Dropdown
Bài 313: Tối ưu code chức năng thêm bài viết
Bài 314: Tối ưu code chức năng thêm bài viết tiếp theo
Bài 315: Truy xuất và hiển thị bài viết nổi bật
Bài 316: Tối ưu SignUp component
Bài 317: Tối ưu code
Bài 318: Hiển thị thời gian của bài viết
Bài 319: Lưu ý về giao diện tiếp theo
Bài 320: Chức năng thêm Danh mục phần 1
Bài 321: Chức năng thêm Danh mục phần 2
Bài 322: Hiển thị danh sách Danh mục
Bài 323: Chức năng xóa Danh mục
Bài 324: Chức năng cập nhật Danh mục phần 1
Bài 325: Chức năng cập nhật Danh mục phần 2
Bài 326: Chức năng tìm kiếm Danh mục phần 1
Bài 327: Chức năng tìm kiếm Danh mục phần 2
Bài 328: Chức năng tải thêm Danh mục phần 1
Bài 329: Chức năng tải thêm Danh mục phần 2
Bài 330: Hiển thị danh sách User
Bài 331: Tối ưu cấu trúc dữ liệu của User
Bài 332: Chức năng thêm User phần 1
Bài 333: Chức năng thêm User phần 2
Bài 334: Chức năng xóa User
Bài 335: Chức năng cập nhật thông tin User
Bài 336: Tối ưu chức năng xóa hình ảnh phần 1
Bài 337: Tối ưu chức năng xóa hình ảnh phần 2
Bài 338: Tối ưu cấu trúc dữ liệu bài viết phần 1
Bài 339: Tối ưu cấu trúc dữ liệu bài viết phần 2
Bài 340: Hiển thị danh sách bài viết
Bài 341: Chức năng xóa bài viết
Bài 342: Chức năng tìm kiếm, tải thêm bài viết
Bài 343: Chức năng cập nhật bài viết phần 1
Bài 344: Chức năng cập nhật bài viết phần 2
Bài 345: Chức năng cập nhật bài viết phần 3
Bài 346: Chức năng cập nhật bài viết phần 4
Bài 347: Chức năng cập nhật bài viết phần 5
Bài 348: Hiển thị thông tin tác giả bài viết
Bài 349: Hiển thị bài viết liên quan phần 1
Bài 350: Hiển thị bài viết liên quan phần 2
Bài 351: Tối ưu thông tin user authentication
Bài 352: Tối ưu source code phần 1
Bài 353: Tối ưu source code phần 2
Chương 14: Redux toàn tập
Bài 354: Giới thiệu về Redux
Bài 355: Cài đặt Create React App Redux
Bài 356: Ví dụ đơn giản với component Counter
Bài 357: Sử dụng Redux core cho component Counter
Bài 358: Sử dụng Redux toolkit cho component Counter
Bài 359: Thực hành bài tập Toggle DarkMode phần 1
Bài 360: Thực hành bài tập Toggle DarkMode phần 2
Bài 361: Thực hành bài tập Toggle Sidebar
Bài 362: Tìm hiểu Redux Middleware cơ bản
Bài 363: Giới thiệu và cài đặt Redux Saga
Bài 364: Tìm hiểu Generator Function cơ bản
Bài 365: Thực hành call API HackerNews với Redux Saga phần 1
Bài 366: Thực hành call API HackerNews với Redux Saga phần 2
Bài 367: Thực hành call API HackerNews với Redux Saga phần 3
Bài 368: Thực hành call API HackerNews với Redux Saga phần 4
Bài 369: Tìm hiểu extraReducers
Bài 370: Tìm hiểu Redux-thunk cơ bản
Chương 15: Dự án cuối khóa CrowFunding
Bài 371: Giới thiệu dự án
Bài 372: Thiết lập styling và cấu trúc thư mục
Bài 373: Code trang SignUp phần 1
Bài 374: Code trang SignUp phần 2
Bài 375: Code trang SignUp phần 3
Bài 376: Code trang SignUp phần 4
Bài 377: Code trang SignUp phần 5
Bài 378: Code trang SignUp phần 6
Bài 379: Code trang SignIn
Bài 380: Tối ưu hiển thị className
Bài 381: Code giao diện Dashboard – Topbar
Bài 382: Code giao diện Dashboard – Sidebar
Bài 383: Code component Campaign Item phần 1
Bài 384: Code component Campaign Item phần 2
Bài 385: Code component Search
Bài 386: Code component Campaign Page
Bài 387: Tối ưu component Button
Bài 388: Thêm các components Textarea, Dropdown, Editor
Bài 389: Code giao diện trang Campaign View phần 1
Bài 390: Code giao diện trang Campaign View phần 2
Bài 391: Code modal Back This Project
Bài 392: Code chức năng thêm Campaign phần 1
Bài 393: Code chức năng thêm Campaign phần 2
Bài 394: Code chức năng thêm Campaign phần 3
Bài 395: Code chức năng thêm Campaign phần 4
Chương 16: Zustand và Typediv toàn tập
Bài 0: Giới thiệu về chương Bonus và món quà cho học viên
Bài 1: Những câu hỏi phỏng vấn có thể gặp phần 1
Bài 2: Những câu hỏi phỏng vấn có thể gặp phần 2
Bài 3: Những câu hỏi phỏng vấn có thể gặp phần 3
Bài 4: Một số kiến thức bổ sung
Bài 5: Tìm hiểu thư viện Zustand phần 1
Bài 6: Tìm hiểu thư viện Zustand phần 2
Bài 7: Giới thiệu Typediv
Bài 8: Primitives types
Bài 9: Structural types
Bài 10: Thực hành với structural types
Bài 11: Tuple, enum, any, union types
Bài 12: unknow và never types
Bài 13: Interface
Bài 14: Function overloading
Bài 15: Intersection, assertions, casting types
Bài 16: Function types bổ sung phần 1
Bài 17: Function types bổ sung phần 2
Bài 18: Tuple types bổ sung
Bài 19: Generic types
Bài 20: Keyof trong Generic types
Bài 21: Tìm hiểu Utility types
Bài 22: Mapped types
Bài 23: Conditional types
Bài 24: in, keyof, typeof
Bài 25: Bài tập getDeepValue
Bài 26: Bài tập deepEqualCompare
Bài 27: Bài tập searchParamsDecoding
Bài 28: Bài tập ReplaceAll
Bài 29: Typediv React – TodoApp với useReducer
Bài 30: Typediv React – Sử dụng useState, useEffect, children props
Bài 31: Typediv React – Viết custom hooks useTodos
Bài 32: Typediv React – Generic Component
Bài 33: Typediv React – HTMLDetailsProps và IntrinsicElements