ras*_*tay 81 reactjs redux redux-thunk redux-promise
据我所知并纠正我,如果我错了,redux-thunk是一个中间件,它可以帮助我们在动作本身中调度异步函数和调试值,而当我使用redux-promise时,我无法创建异步函数而不实现自己的机制为Action抛出仅调度普通对象的异常.
这两个包之间的主要区别是什么?在单页反应应用中使用这两个包还是坚持使用redux-thunk有什么好处就足够了?
Von*_*onD 108
redux-thunk 允许您的动作创建者返回一个函数:
function myAction(payload){
return function(dispatch){
// use dispatch as you please
}
}
Run Code Online (Sandbox Code Playgroud)
redux-promise 允许他们回复承诺:
function myAction(payload){
return new Promise(function(resolve, reject){
resolve(someData); // redux-promise will dispatch someData
});
}
Run Code Online (Sandbox Code Playgroud)
如果您需要异步或有条件地分派操作,则这两个库都很有用.redux-thunk还允许您在一个动作创建者中多次发送.无论您选择一个,另一个或两个完全取决于您的需求/风格.
XML*_*XML 73
您可能希望/需要在您的应用中同时使用这两者.从redux-promise开始,用于生成异步任务的例行承诺,然后随着复杂性的增加而扩展以添加Thunks(或Sagas等):
redux-promise就会改善你的生活并简化它,快速而简单.(简而言之,当你解决时,你需要考虑'展开'你的承诺,然后编写/发送结果,redux-promise(-middleware)会为你解决所有无聊的事情.)在这些情况下,它的好处redux-thunk是它允许您将复杂性封装在您的动作创建者中.
但请注意,如果您的Thunk生成并分发承诺,那么您将希望将两个库一起使用:
redux-promise然后会处理在减速器上展开你的Thunk产生的个别承诺,以避免需要的样板.(你可以用Thunks做所有事情,promise.then(unwrapAndDispatchResult).catch(unwrapAndDispatchError)但......为什么你呢?)另一种总结用例差异的简单方法:Redux操作周期的开始与结束:
redux-promise是你的流程结束,一旦所有事情都归结为简单的承诺,你只想打开它们并将其已解决/拒绝的值存储在商店中
redux-promise-middleware原始背后的想法是一个更完整和可理解的实现redux-promise.它正在积极开发中,并且也得到了很好的补充redux-promise-reducer.redux-saga,它非常相似redux-thunk,但基于生成器函数的语法.同样,你可能会将它与...结合使用redux-promise.lga*_*nts 21
完全披露:我对Redux开发相对较新,并且自己也在努力解决这个问题.我会解释一下我发现的最简洁的答案:
ReduxPromise在调度操作时返回promise作为有效负载,然后ReduxPromise中间件用于解析该promise并将结果传递给reducer.
另一方面,ReduxThunk强制动作创建者暂停实际将动作对象分派给reducers,直到调用dispatch为止.
这是我发现此信息的教程的链接:https://blog.tighten.co/react-101-part-4-firebase.
| 归档时间: |
|
| 查看次数: |
27593 次 |
| 最近记录: |