- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
在 ReactJS + Redux 项目中,我有一个方法可以发出 API 请求。如果成功,我想 dispatch 另一个 Action 创建者并等待它完成。然后当它完成时,进入下一步。
目前,以下代码在进行另一个 API 调用时执行调度,但即使在通过调度更新状态之前,它也会立即执行 window.location.href ='http://localhost:3005/#/Home'
然后调度完成。
那么在执行下一行代码 window.location.href ='http://localhost:3005/#/Home'
?
这是 Action 创建者:
loggingIn(userInfo) {
var userInfoBody = {
'username': `${userInfo.username}`,
'password': `${userInfo.password}`
}
var configuration = {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(userInfoBody)
}
return function(dispatch) {
fetch('https://backendserver.com:8080/creds', configuration)
.then(response => response.json())
.then(response => {
//Would like to finish this dispatch completely before start executing window.location.href ='http://localhost:3005/#/Home'
dispatch(actions.updateUserInfo(userInfo.username))
window.location.href ='http://localhost:3005/#/Home'
})
.catch((error) => {
console.log("Error: ", error)
})
}
提前致谢
最佳答案
可能最简化的方法是引入另一个 Action ,您将通过执行 window.location.href = '...' 东西来对此使用react。
由于 redux 可以被认为是“单线程”,您可以确保在每次调用之间调度状态树都已完全更新。
dispatch(actions.updateUserInfo(userInfo.username))
// It's guaranteed that at this point your updateUserInfo action is handled and state tree is updated
dispatch(actions.userInfoUpdated(userInfo.username))
然后您将通过执行 window.location.href = '...' 操作在 redux 中间件中处理新操作“userInfoUpdated”。
关于javascript - ReactJS + 终极版 : How to wait until dispatch has been completed before moving onto next step?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40007506/
意识到这可能是主观的,具体取决于手头的项目,我正在寻找构建 VS (Visual Studio) 解决方案的“最佳实践”方法。 请随意编辑此内容、评论您认为可能不正确的内容、提出替代方案等。我很高兴看
这个问题不太可能帮助任何 future 的访问者;它只与一个小的地理区域、一个特定的时间点或一个非常狭窄的情况相关,这些情况并不普遍适用于互联网的全局受众。为了帮助使这个问题更广泛地适用,visi
我维护和协作一些用 CommonJS 编写的 JavaScript 模块,这些模块需要高质量的 UMD 包装器。 依赖项来自 npm 但至少有 CommonJS 和 AMD 支持(或者我可以添加它)。
Intellisense 在我的 VS 上运行得非常糟糕...... 当我用 C++ 编写代码时,它可以 100% 正常工作,直到我开始使用模板,然后它才会完全停止工作,停止检测错误并且不会在所有情况
Microsoft网站具有冲突的信息: http://msdn.microsoft.com/en-us/library/ms182372.aspx ...使用Visual Studio Premium
我是一名优秀的程序员,十分优秀!