据我所知,如果我错了,请纠正我,redux-thunk是一个中间件,它帮助我们在操作本身中调度异步函数和调试值,而当我使用redux-promise时,如果不实现我自己的机制,我就无法创建异步函数,因为操作抛出了一个仅调度纯对象的异常。
这两个包之间的主要区别是什么?在一个react应用中同时使用这两个包有什么好处吗?或者坚持redux-thunk就足够了吗?
发布于 2016-04-12 23:48:09
redux-thunk允许您的操作创建者返回函数:
function myAction(payload){
return function(dispatch){
// use dispatch as you please
}
}redux-promise允许他们返回一个承诺:
function myAction(payload){
return new Promise(function(resolve, reject){
resolve(someData); // redux-promise will dispatch someData
});
}如果您需要异步或有条件地分派操作,这两个库都很有用。redux-thunk还允许您在一个操作创建器中分派几次。你是选择一个,另一个,还是两者都选,完全取决于你的需求/风格。
发布于 2016-06-19 23:30:49
您可能希望/需要在您的应用程序中同时使用这两个工具。从redux-promise开始,用于常规的promise-promise异步任务,然后扩展到添加Thunks (或Sagas等)随着复杂性的增加,:
redux-promise将改善你的生活,并简化它,快速和容易。(简而言之,redux-promise(-middleware)不需要考虑在承诺解析时“解开”它们,然后编写/分派结果。)
在这些情况下, redux-thunk 的好处是它允许您将复杂性封装在操作创建器中。
但请注意,如果您的Thunk生成并分发promises,那么您将希望同时使用这两个库:
redux-promise promise.then(unwrapAndDispatchResult).catch(unwrapAndDispatchError)在Thunks中执行所有操作...但你为什么要这样做呢?)总结用例差异的另一种简单方法是: Redux操作周期的开始和结束:
redux-promise用于流的末尾,一旦一切都归结为简单的承诺,您只需将它们解包并将它们的解析/拒绝值存储在存储中
备注/参考:
redux-promise-middleware是原始redux-promise背后的思想的更完整和更容易理解的实现。它正在积极开发中,也得到了redux-promise-reducer的很好补充。redux-saga,它与redux-thunk非常相似,但基于生成器函数的语法。同样,您可能会将其与redux-promise.发布于 2017-01-14 03:27:07
完全公开:我是Redux开发的新手,我自己也在努力解决这个问题。我将转述我找到的最简洁的答案:
当一个动作被分派时,ReduxPromise会返回一个promise作为ReduxPromise的有效负载,然后ReduxPromise中间件会解析这个promise并将结果传递给reducer。
另一方面,ReduxThunk强制动作创建者推迟将动作对象实际分派到reducers,直到调用dispatch。
这里有一个教程的链接,我在那里找到了这个信息:https://blog.tighten.co/react-101-part-4-firebase。
https://stackoverflow.com/questions/36577510
复制相似问题