Redux Saga: 02 - Các khái niệm cần biết trong Redux Saga 🔥

Ғылым және технология

Gì mà effect, task rồi block/non-blocking, ... đủ thứ trong redux saga, nó là gì? Hãy cùng mình tìm hiểu trong video này nhé!
Trong video này mình sẽ chia sẻ cho các bạn:
✅ Các khái niệm trong Redux Saga
✅ Giới thiệu một số Middleware API
✅ Giải thích cách hoạt động của redux saga middleware
✅ Chạy demo thử một cái code redux saga đơn giản
---
VIDEO CHAPTERS:
Made by: Khang Nguyễn
Cảm ơn bạn nhiều nhé! ❤️
---
0:00 Bắt đầu
1:15 Các khái niệm trong Redux Saga:
1:38 1. Effect
3:04 2. Task
3:40 3. Blocking/Non-blocking call
4:24 4. Watcher/Worker
5:52 Cách nhận biết blocking và non-blocking
6:42 Giới thiệu 1 số cái trong middleware API
9:03 Saga là cái gì?
15:30 Effect creators
19:14 Tóm tắt lại
🌐 Link tham khảo:
- Redux saga glossary: redux-saga.js.org/docs/Glossary
- Redux saga API reference: redux-saga.js.org/docs/api
#redux
#redux_saga
#redux_saga_glossary
----
Khoá học ReactJS cho người mới bắt đầu trên Udemy của mình
🌐 Link khuyến mãi: course.ezfrontend.com/reactjs
🎁 Giá ưu đãi được đính kèm trong link 😉
-----
💻 Easy Frontend 🎉
Nơi kiến thức lập trình web frontend (html/css/javascript/reactjs) được chia sẻ một cách đơn giản, dễ hiểu mà đặc biệt là vui 😊 Với những tài liệu (tutorial) được biên soạn một cách kĩ lưỡng để giúp các bạn developer mới có thể nắm bắt vấn đề một cách nhanh chóng và hiệu quả. Từ đó nâng dần khả năng coding của các bạn lên theo thời gian.
❤️ Ủng hộ mình làm videos thì đóng góp qua MoMo/ZaloPay: 0901 309 729 nhé!
Kết nối với mình:
- 🎉 Fan page: / learn.easyfrontend
- ❓Group: / easyfrontend
- 💻Github: github.com/paulnguyen-mn
- 💼 LinkedIn: / haunguyenmn

Пікірлер: 72

  • @EasyFrontend
    @EasyFrontend3 жыл бұрын

    hihi có bạn nào thông suốt đc các khái niệm của Redux Saga sau video này ko mn? 😊

  • @GaryHuu

    @GaryHuu

    3 жыл бұрын

    :)

  • @baole2691

    @baole2691

    3 жыл бұрын

    ko hehe :))) noi chu ra tiep video di anh coi đã quá

  • @Cinny09

    @Cinny09

    3 жыл бұрын

    hóng tiếp video của anh ❤️

  • @trungtrung2248

    @trungtrung2248

    3 жыл бұрын

    đỉnh anh ơiiii

  • @ongtruongpham4816

    @ongtruongpham4816

    3 жыл бұрын

    theo hướng em hiểu thì khi dispatch 1 action lên, saga listen và loop qua từng yield effect. vậy trường hợp này nó khá giống switch case . vậy có vẻ performance k tốt p không anh. hay saga đã làm gì đó giúp việc này mượt hơn v anh. em có thể đọc sâu hơn ở đâu v ạ .

  • @tanducnguyen3469
    @tanducnguyen34693 жыл бұрын

    1:36 Effect - Là 1 object chứa thông tin, để middleware biết phải làm gì. 3:03 Task - Là 1 process background. 3:41 Blocking/Non-blocking call - đợi/ko đợi. 4:23 Watcher/Worker. 5:52 Where to check Blocking/Non-blocking Effect. 7:04 createSagaMiddleware API. 8:57 Saga. 15:29 Effect Creators. 19:12 Saga summary.

  • @EasyFrontend

    @EasyFrontend

    3 жыл бұрын

    toẹt vời em ơi 🎉

  • @hoangdiemnguyen8273
    @hoangdiemnguyen82733 жыл бұрын

    Mong đợi clip tiếp theo từ anh!! ^^

  • @EasyFrontend

    @EasyFrontend

    3 жыл бұрын

    hihi okie em nhen Diễm 😊

  • @KhangNguyen-kq2iw
    @KhangNguyen-kq2iw2 жыл бұрын

    0:00 Bắt đầu 1:15 Các khái niệm trong Redux Saga: 1:38 1. Effect 3:04 2. Task 3:40 3. Blocking/Non-blocking call 4:24 4. Watcher/Worker 5:52 Cách nhận biết blocking và non-blocking 6:42 Giới thiệu 1 số cái trong middleware API 9:03 Saga là cái gì? 15:30 Effect creators 19:14 => Tóm tắt lại

  • @EasyFrontend

    @EasyFrontend

    2 жыл бұрын

    Yeah cảm ơn em nhiều nhiều nhé Khang ơi Số lượng video đã contribute chapter: 3 🎉

  • @maicaotri3668
    @maicaotri36683 жыл бұрын

    video rất hay và dễ hiểu ạ, cám ơn anh Hậu đẹp trai, chúc anh nhiều sức khỏe 😍😎

  • @EasyFrontend

    @EasyFrontend

    3 жыл бұрын

    hehe cảm ơn em nhiều nhé Trí 😉

  • @minhtringuyen242
    @minhtringuyen2423 жыл бұрын

    Tuyệt ạ ^^

  • @trongnguyenduy3936
    @trongnguyenduy39362 жыл бұрын

    Cảm ơn a. bài giảng hay quá

  • @EasyFrontend

    @EasyFrontend

    2 жыл бұрын

    Yeahhh cảm ơn em nhiều nhen, nhớ theo hết series 46 videos em nhé 😍

  • @thangdp9625
    @thangdp96253 жыл бұрын

    hay quá a ạ .Chúc a thành công

  • @EasyFrontend

    @EasyFrontend

    3 жыл бұрын

    hehe cảm ơn em nhiều nhé ❤️

  • @tunguyenngoc8236
    @tunguyenngoc82362 жыл бұрын

    làm xong đọc lại thấy hay ghê luôn

  • @EasyFrontend

    @EasyFrontend

    2 жыл бұрын

    yeahhh cảm ơn Tú nhiều nhé, rất vui vì nội dung hữu ích cho bạn nè 😍

  • @minhtringuyen242
    @minhtringuyen2423 жыл бұрын

    hóng clip tiếp theo ạ,

  • @EasyFrontend

    @EasyFrontend

    3 жыл бұрын

    hehe okie em nhen Trí, hẹn em tuần này nha 😉

  • @TinhNguyen-ii9zy
    @TinhNguyen-ii9zy3 жыл бұрын

    tạo thêm khóa học Redux Saga trên Udemy đi anh ơi với có thêm project thì tuyệt quá. Em mua để dành học từ từ !!!

  • @EasyFrontend

    @EasyFrontend

    3 жыл бұрын

    hi Tịnh, cái series này, anh sẽ làm một cái project nho nhỏ để demo nè, còn tạo trên Udemy chắc ko em nhen hehe

  • @maicaotri3668
    @maicaotri36683 жыл бұрын

    Anh Hậu ơi, anh có thể ra một vài video hoặc series về chủ đề build project, webpack,... không ạ, cái này có vẻ mang tính lý thuyết và đa dạng quá, em cũng không biết như thế nào, hy vọng anh sẽ dạy về chủ đề này để thông não em và giúp em có thể hiểu và làm tốt hơn khi cần build hoặc setup build project chuẩn mực ạ. 🤗

  • @EasyFrontend

    @EasyFrontend

    3 жыл бұрын

    hi Trí, ở mức basic thì chắc dùng CRA là đủ òi em nhen, còn series này chắc còn hơi lâu mới tới lượt nè hehe 😉

  • @Heocon1507

    @Heocon1507

    2 жыл бұрын

    E cũng khá quan tâm chủ đề này ạ. Vì e thấy thằng react này hệ sinh thái nó nhiều quá nhiều khi hay bị ngợp. Nếu có thể build 1 base project chuẩn để làm việc thì thật tốt ạ Cách tiếp cận nó cũng sẽ dễ dàng hơn :D Cảm ơn a

  • @maicaotri3668
    @maicaotri36683 жыл бұрын

    Anh Hậu ơi, theo anh thấy thì macbook pro m1 và macbook 16inch thì cái nào sài để code tốt hơn ạ?

  • @EasyFrontend

    @EasyFrontend

    3 жыл бұрын

    hihi M1 anh chưa dùng nhưng nghe kể là performance rất bá, nên anh nghĩ nó tốt hơn nhiều òi hehe

  • @trandinhthang5778
    @trandinhthang57783 жыл бұрын

    Hi anh. Ví dụ có một chức năng get API nhưng cần hai nguồn dữ liệu trả về. Nguồn dữ liệu thứ 2 cần id của nguồn dữ liệu thứ nhất. Thì mình xử lý như nào thì hợp lý ạ. Cách thứ 1 là sau khi yield call ở saga có data rồi yield call lần 2. Hay useEffect truyền vào mảng là giá trị của state data thứ nhất trả về. Có thay đổi thì dispatch action xử lý API thứ 2 ạ

  • @EasyFrontend

    @EasyFrontend

    3 жыл бұрын

    hi em, nếu mà cái API này lúc nào cũng gọi 2 cái liên tiếp như vậy thì a suggest em làm ở tầng API nhé. Tạo một hàm gọi API, trong hàm đó sẽ gọi tới 2 APIs như em nói, xong trả về KQ cuối 😉

  • @gfshfds
    @gfshfds2 жыл бұрын

    anh Hậu ơi, em đang có một case như này anh có lời khuyên gì không ạ. Đại loại là như này: + em có một saga là setCacheData, thì saga này được gọi khi em thay đổi data trên form, kiểu là chạy ngầm ở dưới ý ạ, cứ thay đổi trên form thì gọi + trên form của em thì có một nút submit, do bản chất là khi bấm nút submit thì backend thì sẽ lấy data trên cache mà em đã gọi api set mỗi khi mà change trên form rồi, nên là khi submit em ko cần gửi mấy cái data ấy đi, mà phía BE sẽ tự lấy ở cache. Em đang gặp vấn đề có những lúc setCache chưa chạy xong, mà user đã bấm submit nên là khi đó BE sẽ lấy data cũ để lưu database do setCache chưa xong nên là data chưa mới nhất. Anh có advice nào ko ạ? tại hai cái saga này riêng biệt nên là trong saga submit em cũng chả biết cái setCache có đang chạy hay ko?

  • @EasyFrontend

    @EasyFrontend

    2 жыл бұрын

    case này hơi lạ, có gì em ping anh qua messenger hen 😉 anh cần hiểu tại sao em lại phải call API lên BE mỗi khi update trên form nha

  • @thanhpham1324
    @thanhpham13242 жыл бұрын

    5:25 ai khởi tạo watcher generator và next() của watcher mà nó gọi được hàm take(ACTION) và next() tiếp để gọi được fork ạ ?

  • @EasyFrontend

    @EasyFrontend

    2 жыл бұрын

    hi Thành, khởi tạo là lúc đầu rồi em nhen, còn chạy lúc sau là cơ chế của redux saga òi 😉

  • @thanhpham1324
    @thanhpham13242 жыл бұрын

    mọi người cho tớ hỏi chút : Theo t, việc quyết định ông generator có chạy tiếp hay không thì t nghĩ phụ thuộc vào ông middleware có gọi next() hay không . T có giả thuyết là Trường hợp middleware đọc effect A và biết đây là blocking thì ông ý sẽ KHÔNG gọi next() của generator vội mà xử lý effect A xong xuôi , sau đó mới gọi next(result). Còn trường hợp middleware đọc effect B và biết đây là nonblocking thì middleware sẽ gọi luôn next() của generator đồng thời xử lý effect B (2 việc một lúc ). @Easy Frontend anh ơi em nghĩ vậy đúng không ạ ??

  • @EasyFrontend

    @EasyFrontend

    2 жыл бұрын

    yeah hợp lý em nhen 👍

  • @tritranminh3230
    @tritranminh32302 жыл бұрын

    anh ơi có thể giải thích sơ về tác dụng của Channel và Buffer được hk anh

  • @EasyFrontend

    @EasyFrontend

    2 жыл бұрын

    à cái này thì anh cũng chưa làm nhiều nên hk summary lại giúp em đc nhen

  • @n9.lemanhhung971
    @n9.lemanhhung9713 жыл бұрын

    muốn lấy data từ json-sever để làm initialState làm như nào ạ

  • @EasyFrontend

    @EasyFrontend

    3 жыл бұрын

    hi Hùng, cái này em dispatch action từ component, rồi sau đó đi lấy dữ liệu cập nhật lại lên store nhé Hùng 😉

  • @hieunguyen0801
    @hieunguyen08013 жыл бұрын

    khóa này mình dùm redux-toolkit hay redux thuần vậy anh

  • @EasyFrontend

    @EasyFrontend

    3 жыл бұрын

    hi Hiếu, khả năng là anh sẽ làm cả 2 đó em 😉 tuỳ độ siêng của anh nhen hehe

  • @NguyenDinhNamz
    @NguyenDinhNamz3 жыл бұрын

    good job

  • @EasyFrontend

    @EasyFrontend

    3 жыл бұрын

    Thanks

  • @vuviet4764
    @vuviet47642 жыл бұрын

    Hi anh em có 1 vấn đề muốn hỏi là tại sao mình dispatch 1 action mà ko call api ở action hoặc reducer của redux, hoặc là call 1api xong rồi dispatch action vào redux mà lại phải sử dụng thêm middleware ko ạ

  • @EasyFrontend

    @EasyFrontend

    2 жыл бұрын

    à em tham khảo câu trả lời ở đây em nhen faq.ezfrontend.com/?id=612b1aeb9dab4b601f971a36&limit=10&page=0&q=async

  • @vuviet4764

    @vuviet4764

    2 жыл бұрын

    @@EasyFrontend ok anh, em cảm ơn ạ

  • @tungtruongthanh9774

    @tungtruongthanh9774

    2 жыл бұрын

  • @truonghung9618
    @truonghung96183 жыл бұрын

    em vẫn chưa hiểu lắm, a dùng từ dispatch tức là sao ạ

  • @EasyFrontend

    @EasyFrontend

    3 жыл бұрын

    hi Hùng ơi, em đi coi lại series về Redux cơ bản để hiểu về Redux trước nhen 😉

  • @Cinny09
    @Cinny093 жыл бұрын

  • @hungnguyensycanh7732
    @hungnguyensycanh77323 жыл бұрын

    Anh Hậu cho em xin slide tài liệu được không ạ ?

  • @EasyFrontend

    @EasyFrontend

    3 жыл бұрын

    hi em, tài liệu nó là cái link website á nhen, chứ ko phải a soạn ra file pdf em nha 😉

  • @duetran9373
    @duetran93733 жыл бұрын

    mỗi ngày 1 video dc ko anh ơi, :(( trùng hợp thay em cũng đang tìm hiểu để làm về thằng này.

  • @EasyFrontend

    @EasyFrontend

    3 жыл бұрын

    hihi sr em, tiếc là đợt này a hơi sml nên ko làm nổi mỗi ngày ơi, chỉ làm đc hàng tuần thôi nè 😉

  • @dasdsa5039
    @dasdsa5039 Жыл бұрын

    anh cho em hỏi là 1 effect đang block mà có 1 cái fork khác được gọi thì thế nào ạ

  • @EasyFrontend

    @EasyFrontend

    Жыл бұрын

    hi em, anh chưa hiểu câu hỏi của em lắm, em ví dụ một trường hợp cụ thể nào luôn đc hk?

  • @dasdsa5039

    @dasdsa5039

    Жыл бұрын

    @@EasyFrontend dạ là vd như em có 1 cái take ở 1 cái takevery đang bị block mà có 1 cái takeleading của 1 cái action khác call thì chuyện gì sẽ xảy ra ạ

  • @TuanNguyen-oe5sl
    @TuanNguyen-oe5sl3 жыл бұрын

    Làm mẫu crud bằng resaga đi anh

  • @EasyFrontend

    @EasyFrontend

    3 жыл бұрын

    okie em nhen Tuấn 😉

  • 2 жыл бұрын

    cái chỗ generator nó gặp những effect blocking thì nó đợi trả về kết quả rồi nó chạy tiếp còn non blocking nó chỉ lướt qua không cần trả về kết quả hả anh ?

  • @EasyFrontend

    @EasyFrontend

    2 жыл бұрын

    yeah đúng òi em nhen 😉

  • @thanhpham1324

    @thanhpham1324

    2 жыл бұрын

    mọi người cho tớ hỏi chút : Theo t, việc quyết định ông generator có chạy tiếp hay không thì t nghĩ phụ thuộc vào ông middleware có gọi next() hay không . T có giả thuyết là Trường hợp middleware đọc effect A và biết đây là blocking thì ông ý sẽ KHÔNG gọi next() của generator vội mà xử lý effect A xong xuôi , sau đó mới gọi next(result). Còn trường hợp middleware đọc effect B và biết đây là nonblocking thì middleware sẽ gọi luôn next() của generator đồng thời xử lý effect B (2 việc một lúc ). @Easy Frontend anh ơi em nghĩ vậy đúng không ạ ??

  • @thanhpham1324

    @thanhpham1324

    2 жыл бұрын

    @@EasyFrontend anh ơi em nghĩ vậy đúng không ạ ??

  • 2 жыл бұрын

    @@thanhpham1324 tui tiếp cận cái này với nền tảng của python: 1. theo tui hiểu việc generator chỉ đơn giản là trình tạo và nó sẽ đặt breakpoint tại những đoạn có yield sau khi ông gọi next thì nó sẽ trả về result cho ông và đặt tiếp breakpoint cho tới khi raise về exception. 2. blocking ở đây ám chỉ việc nó chạy tuần tự tức là đồng bộ đợi kết quả trả về rồi chạy tiếp trình generator chỉ trả về giá trị, và giá trị này được thực hiện một cách tuần tự. 3. non-blocking ám chỉ đến việc nó chạy không đồng bộ tức là khi nó đụng đến việc đó một là nó tạo ra một thread để chạy song song với hàm bạn đang chạy nên mói nói nó chạy lướt qua không cần đợi kết quả còn nếu muốn đợi kết quả thì cần có một hàm await để đợi lấy kết quả trong xử lý bất đồng bộ. 4. mình chưa xem lại video sau 5 tháng chỉ làm ra được cái tools nho nhỏ bằng reactjs nên những gì mình nhớ có thể không đúng? bạn nên chọn lọc nhé.,

  • @quangnguyenvan7297
    @quangnguyenvan72972 жыл бұрын

    Giống cơ chế hoạt động của Rxjs nhỉ.

  • @hannguyeninh3546

    @hannguyeninh3546

    2 жыл бұрын

    Hehe gặp đại ca trên này :D

  • @duyk30b
    @duyk30b3 жыл бұрын

    phê bình anh làm video này nhé, video này a demo hình rồi nói theo chart thì dễ hiểu hơn, chứ a nói 1 hoài như này chẳng hiểu gì cả :((

  • @EasyFrontend

    @EasyFrontend

    3 жыл бұрын

    cũng hợp lý Duy nhen, cảm ơn em đã phản hồi nhen, a sẽ để ý vụ này cho series sau hihi

Келесі