Redux-thunk


Redux-thunk tạo ra với mục đích kiểm soát action được gửi đến các Reducers
Nó tạo ra middleware kiểm soát các action, nó cho biết lúc nào action được gửi đến các reducers
Mục đích phổ biến của redux-thunk là đối mặt với các action không đồng bộ.
=> Vấn đề mà redux-thunk giải quyết là nó kiểm soát các action có chứa code không đồng bộ
, kết quả chưa kịp trả về thì các ActionCreator đã trả về action rồi
, redux thunk sẽ kiểm soát điều này.

Theo hoạt động của redux :
+ Một ActionCreators phải trả về một action (object)
+ Trong Action object phải có thuộc tính type
+ Trong Action có thể có payload hoặc không.

=> Vậy redux-thunk hoạt động như thế nào ?
+ Chú ý rằng redux-thunk không hoạt động kiểu như "ok mày đưa
Action cho tao và tao sẽ mang nó đến các reducres => redux-thunk
không hoạt động như vậy ! Nó có mục đích chính là tạo ra các
middleware mà thôi , giúp chúng ta đối phó với các ActionCreator có chưa code
async
=> Vậy redux-thunk đối phó với các ActionCreator như thế nào ?
Reudx-thunk cho phép chúng ta trả về không như chỉ action dạng
object mà còn cho phép trả về function và nếu như bạn trả về hàm
trong redux-thunk thì redux-thunk có thể invoked tự động hàm đó
hoặc bạn có thể gọi hàm đó.


=> Chúng ta bắt đầu ở ActionCreators

- Rõ ràng Action có thể trả về một trong 2 thứ object hoặc
function (thật ra về bản chất 2 thứ này là một), giả sử như nó gọi
là Something

- Nếu như trong redux Something sẽ được pass và dispatch rôi
dispatch sẽ chuyển nó cho các Reducers, nhưng trong redux-thunk
thì KHÔNG, ở giũa dispatch và reducers có một hoặc nhiều middleware
được tạo bằng redux-thunk tùy thuộc vào bạn.

- Sau khi action được pass vào Middleware thì redux-thunk sẽ kiểm
tra action => mày(action) là object hay function ?
+ Nếu mày là object => éo có gì xảy ra cả , redux-thunk không quan
tâm thằng action dạng object => Nó sẽ pass các action này vào
Reducers như thằng dispatch pass thôi chả có gì khác biệt.
+ Nếu mày có dạng object => Oh yeahhhh tao sẽ invoked hàm và tư
động truyền dispatch và getSate như 2 đối số.


Như vậy sau khi hàm chạy xong thì chúng ta sử dụng dispatch để
phân phối đến các Reducres...2 đối số của chúng ta về cơ bản
cung cấp một sức mạnh vô hạn, chúng ta có thể thay đổi bất kỳ dữ
liệu nào chúng ta muốn và để có được state
=> Tóm tắt lại rằng khi ACtionCreate trả về một action có dạng
function thì redux-thunk sẽ tự động invoked hàm và nó truyền cho
hàm 2 đối số là 2 hàm dispatch và getState vào,
đợi khi hàm chạy xong .=> chúng ta nhận được một action mới
=> Chúng ta gửi vào redux-thunk một hành động để tạo ra một hành
động mới và hành động này luôn trả về một object
=> Pass ACtion này lại cho dispatch => dispatch lại truyền nó vào
trong redux-thunk => Nhưng bây giờ action này là một object nên
nó được truyền cho Reducres luôn.





























































Nhận xét

Bài đăng phổ biến