Reactjs 如何一个接一个地分派多个操作
在我的react/redux应用程序中,我经常希望一个接一个地分派多个操作 给出以下示例:成功登录后,我希望存储用户数据,然后启动另一个异步操作,从服务器加载应用程序配置 我知道我可以使用Reactjs 如何一个接一个地分派多个操作,reactjs,redux,Reactjs,Redux,在我的react/redux应用程序中,我经常希望一个接一个地分派多个操作 给出以下示例:成功登录后,我希望存储用户数据,然后启动另一个异步操作,从服务器加载应用程序配置 我知道我可以使用redux thunk来构建这样的动作创建者 function loginRequestSuccess(data) { return function(dispatch) { dispatch(saveUserData(data.user)) dispatch(loadConfig())
redux thunk
来构建这样的动作创建者
function loginRequestSuccess(data) {
return function(dispatch) {
dispatch(saveUserData(data.user))
dispatch(loadConfig())
}
}
因此,我的问题是:
调度返回时,是否所有侦听该操作的减速器都已更改状态?我想知道这两个调度电话是否严格按顺序进行
谢谢你的帮助
redux thunk
正是您想要的。我认为这是一个很好的练习。
为了回答您的问题,事实上,当第一次调度返回时,状态已经被调用的还原器更改了。是的,redux thunk允许您按照您所说的做,是的,它是调度多个操作的最佳实践(因为它的简单性,我更喜欢它)。状态确实会在您分派时(在它返回时)立即更新,这就是为什么会给您一个函数来检索thunk中的状态,而不仅仅是对状态的引用。通过这种方式,您可以通过一次分派来更改状态,然后调用getState()获取对新状态的引用,以便在需要时从中读取。我知道这是一个延迟响应:-p您可以使用Redux Thunk并签出Redux Saga来完成此操作。Redux传奇提供了一种同时处理大量动作的惊人方式。下面是使用Redux Thunk分派多个操作的示例
function getAndLoadSider(moduleName){
return function(dispatch){
return doSomeApiCall(someData).then(function(item){
let _item = someOtherFunction(item.collections);
let _menuData = {
name: item.name,
key: item.key
};
return new Promise(function(res, rej){
dispatch(actionOne(_menuData));
res(_item);
}).then((_item) => dispatch(actionTwo(_item)))
}
}
当一个动作依赖于第一个动作时,上述方法适用于您的情况。这是一种基于承诺的方法。如果你不喜欢做大量的承诺编码,我建议你选择传奇。查看此链接,您将学习如何撰写传奇。学习曲线陡峭;但一旦你完成,传奇将使你成为一个忍者redux开发人员
希望这能有所帮助:-)我已经看过了redux传奇,它基于可能符合您需要的生成器/产量。乍一看可能很困难,但如果您想控制顺序或并行的内容,请在调度是顺序和同步的情况下尝试此操作,ReactJS将批处理更新并异步运行其更新(渲染等),因此您可能只获得一个渲染。看,是的,redux thunk很适合调度多个操作,但它不能保证所有操作都是顺序的,不是吗?在同一个调度程序中,所有操作都是顺序的。在上面描述的情况下,
saveUserData
总是在loadConfig
之前,您可以分享实现或链接到任何相关的文章吗。这里似乎有一些例子:否则,对于一篇文章,它看起来像是有人在这里写了一些关于它的东西:为什么不用saga举例说明呢?你提到了,可能会给出全面的答案。我们赞赏各方面的意见