REDX有什么区别?
据我所知并纠正我,如果我错了,redux-thunk是一个中间件,它可以帮助我们在动作本身中调度异步函数和调试值,而当我使用redux-promise时,我无法创建异步函数而不实现我自己的机制作为Action引发仅调度普通对象的异常。
这两个软件包的主要区别是什么? 在单个页面反应应用程序中使用这两个软件包或坚持使用redux-thunk会有什么好处?
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
还允许您在一个动作创建者内多次分派。 无论你选择哪一种,其他或两者完全取决于你的需求/风格。
你可能想要/需要在你的应用程序一起。 从减少约定开始,例行承诺产生异步任务,然后按照复杂度增加来扩展以添加Thunk(或Sagas等) :
redux-promise
将会改善你的生活并简化它,快速而简单。 (简而言之,您不需要考虑在解决问题时“解开”您的承诺,然后编写/分发结果,而是使用redux-promise(-middleware)来为您处理所有无聊的事情。) 在这些情况下, redux-thunk
的好处是它可以让你在行动创建者内部封装复杂性 。
但是请注意,如果你的Thunk产生和发送承诺,那么你会想同时使用这两个库:
redux-promise
将会在reducer中处理由Thunk产生的单个promise,以避免产生的样板文件。 (你可以在promise.then(unwrapAndDispatchResult).catch(unwrapAndDispatchError)
做所有事情,用promise.then(unwrapAndDispatchResult).catch(unwrapAndDispatchError)
...但你为什么?) 另一种总结使用情况差异的简单方法是: Redux行动周期的开始与结束 :
redux-promise
是为了结束您的流程,一旦所有事情都被简化为简单的承诺,并且您只是想打开它们并将其已解决/拒绝的价值存储在商店中 NOTES / REFS:
redux-promise-middleware
是原始redux-promise
背后更完整和可理解的实现。 它正处于积极的发展阶段,并且还被redux-promise-reducer
完美地补充。 redux-saga
,它与redux-thunk
非常相似,但是基于生成器函数的语法。 再次,你可能会将它与redux-promise
一起使用。 完全披露:我对Redux开发比较陌生,自己也在为这个问题而苦苦挣扎。 我将解释我发现的最简洁的答案:
ReduxPromise在分派动作时返回承诺作为有效负载,然后ReduxPromise中间件将解析该承诺并将结果传递给reducer。
另一方面,ReduxThunk强制动作创建者在实际调度动作对象到减速器之前阻止,直到调用调用。
这里有一个指向我发现这个信息的教程的链接:https://blog.tighten.co/react-101-part-4-firebase。
链接地址: http://www.djcxy.com/p/59055.html