[英]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.