据我所知并纠正我是否有错,redux-thunk是一个中间件,可以帮助我们在操作本身中调度异步函数并调试值,而当我使用redux-promise时,如果不实现自己的方法就无法创建异步函数作为Action的机制引发仅分配纯对象的异常。
这两个软件包之间的主要区别是什么?在单个页面react应用程序中使用这两个软件包是否有任何好处,或者坚持redux-thunk就足够了?
据我所知并纠正我是否有错,redux-thunk是一个中间件,可以帮助我们在操作本身中调度异步函数并调试值,而当我使用redux-promise时,如果不实现自己的方法就无法创建异步函数作为Action的机制引发仅分配纯对象的异常。
这两个软件包之间的主要区别是什么?在单个页面react应用程序中使用这两个软件包是否有任何好处,或者坚持redux-thunk就足够了?
您可能会希望/需要在应用程序中一起使用。从redux-promise开始,用于日常的产生承诺的异步任务,然后随着复杂性的增加而扩展以添加Thunk(或Sagas等):
redux-promise
改善您的生活,并快速简便地简化生活。(简而言之,redux-promise(-middleware)无需考虑在诺言解决时“解开”诺言,然后编写/分发结果,而是为您处理所有无聊的工作。)在这些情况下,的好处redux-thunk
是它使您可以将复杂性封装在动作创建者内部。
但是请注意,如果您的Thunk产生并调度了Promise,那么您将需要同时使用这两个库:
redux-promise
然后将在解压缩器上处理Thunk生成的各个promise的解包,以避免产生样板。(您可以用promise.then(unwrapAndDispatchResult).catch(unwrapAndDispatchError)
... 在Thunks中做所有事情,但是为什么呢?)总结用例差异的另一种简单方法:Redux操作周期的开始与结束:
redux-promise
是为了流程的结束,一旦一切都简化为简单的承诺,而您只想解开它们并将其解决/拒绝的价值存储在商店中
redux-promise-middleware
这是对原始想法背后的更完整和可理解的实现redux-promise
。它正在积极开发中,并得到了很好的补充redux-promise-reducer
。redux-saga
,它与极为相似redux-thunk
,但是基于生成器函数的语法。同样,您可能会结合使用它redux-promise
。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
还可以让您在一个动作创建者内分派几次。您选择一个,另一个还是全部取决于您的需求/风格。
全面披露:我对Redux开发还比较陌生,我自己也很困惑这个问题。我将解释我找到的最简洁的答案:
当调度动作时,ReduxPromise返回一个Promise作为有效负载,然后ReduxPromise中间件工作以解析该Promise并将结果传递给reducer。
另一方面,ReduxThunk强制操作创建者推迟将操作对象实际分发给reducer,直到调用dispatch。
这是我在其中找到此信息的教程的链接:https : //blog.tighten.co/react-101-part-4-firebase。