![](/img/trans.png)
[英]React getting Invalid state while using async action creator with redux-thunk
[英]Difference between an action creator using redux thunk and a normal async function
這是因為,當您使用 thunk 時,您將返回一個對象或函數。 在dispatch(fetchUser())
情況下,當您調度類似dispatch(fetchUser())
,它沒有返回任何內容,因為您正在調用異步方法。 現在 await 下面的代碼只有在 async all 完成后才會執行,原始調用dispatch(fetchUser())
已經完成(提示:只有 await 下面的代碼沒有執行,但函數調用已經結束),以及fetchUser()
沒有返回任何對象,但在第一種情況下,您實際上正在返回一個調用異步方法的函數。 這就是 thunk 中間件的神奇之處。 它執行該函數並分派一個由 thunk 執行的動作(提示:您正在返回一個將分派作為參數的函數)。 希望這可以消除您的疑慮。 我建議您閱讀 async/await 的真正工作原理(提示:事件循環/單線程)。
你不能使用異步函數,因為它總是會返回一個承諾。 即使你返回一個值,它也會被包裝在一個承諾中並被返回。 如果在 async 函數中沒有返回任何內容並嘗試讀取值,則 undefined 將被包裝在一個 promise 中。 正如 redux 所說,動作創建者應該返回一個不能直接使用異步函數完成的普通對象。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.