Redux Promise和Redux Promise Middleware有什么意义?
我搜索了高和低,但无法找到明确的答案。
我已经设法将我的头围绕在Redux的机制上,但是当我接触到API调用和异步动作创建者时,我在Promises的上下文中坚持使用中间件。
你能帮我弄好吗?
给我头疼的难题Cotradictory片断:
YT教程之一说,本地Redux调度方法不支持动作创建者返回的promise,因此需要Redux Promise库(我知道该项目现在可能已经死机,而延续是Redux Promise Middleware)。
丹在“还原 - 还原和还原 - 诺言之间有什么区别?” 即使没有中间件,我也可以使用承诺 - 只需在动作创建者中管理它们即可。
在其他答案中,我找到了使用thunk的例子,其中动作创建者返回了... promise (稍后在调用者/dispatch(myActionCreator(params).then)中处理(因此,承诺可以由没有任何redux-promise lib ..?
在“redux-thunk和redux-promise之间有什么区别?”中,接受的答案指出Redux Thunk返回函数,而Redux Promise返回promise ......那是什么?
总结:使用Redux Promise或Redux Promise Middleware有什么意义? 为什么Redux本身不支持承诺?
更新:
我刚刚意识到,在上面的第3点中,我忽略了then()
被附加到dispatch
并且不包含在dispatch()
参数中。
链接的答案是正确的,但我会尝试进一步解释。
基本的Redux商店将只接受调度简单对象操作:
store.dispatch({type : "ADD_TODO", text : "Buy milk"});
如果您尝试传递除简单对象操作之外的其他任何内容,则商店将发出错误消息:
store.dispatch(() => {});
// Error: "Actions must be plain objects. Use custom middleware for async actions."
中间件在store.dispatch()
周围形成一个管道,每个中间件都可以根据传递给dispatch
任何值执行任何操作:修改它,记录日志,延迟它或派发别的东西。 这意味着一个中间件可以“教” dispatch()
如何接受不是普通操作对象的东西,通过拦截该值并执行其他操作。
因此, redux-thunk
“教授”通过拦截函数并调用函数而不是将其传递给reducer来dispatch
如何接受函数。 redux-promise
“教导”通过在承诺解决或拒绝时拦截承诺和调度行为来dispatch
如何接受承诺。
通常情况下, dispatch
返回传入的任何操作对象。由于中间件环绕dispatch
,它们也可以更改返回的值。 redux-thunk
将运行thunk函数,并返回thunk函数返回的任何内容。 这可以让你做一些有用的事情,比如从thunk回报承诺,并从那里链接行为:
dispatch(someThunkReturningAPromise())
.then(() => {
// Do more stuff here
});
有关该主题的更多信息,请参阅处理副作用的Redux FAQ条目以及我的React / Redux链接列表的Redux副作用部分中的文章。
您需要这些中间件以避免竞争条件,因为javascript是异步的。 他们之间的差异只是实现,thunk工作与功能,传说发电机等
链接地址: http://www.djcxy.com/p/59061.html上一篇: What is the point of Redux Promise and Redux Promise Middleware?