通量:异步操作成功时的编程转换
Flux: programatic transition on async operation success
我的通量工作流程是由于这篇文章而制定的。
SignInView ===> AppActionCreators ===> SomeService
| ||
Promise <============= ||
||
|| ======================> SIGN_IN_SUCCESS
SignIn
视图调用调用SomeService
AppActionCreators#signIn
。所有SomeService
方法都返回 promise,因此AppActionCreators
在解决 promise 后触发操作。
问题:在singIn
成功的情况下进行程序化过渡到IndexView
的真正方法是什么?请看一下代码:
AppActionCreators.js:
AppActionCreators = {
signIn(username, password, signInCb) {
SomeService.signIn(username, password).then(response => {
//QUESTION: trigger action and make transition in Store or pass `signInCb` from `SignIn` view?
AppDispatcher.dispatch({type: ActionTypes.SIGN_IN_SUCCESS, response});
//Or?
signInCb();
});
}
}
SignIn.react.js
class SignIn extends Component, Router.Navigation {
handleSubmit(){
const signInCb = () => this.transitionTo('index', {this.state.data})
AppActionCreators.signIn(this.state.user, this.state.password, signInCb);
}
}
更新:问题的改写版本:使用SIGN_IN_SUCCESS
操作 + 显示/隐藏登录/索引视图与传递转换回调?
触发操作似乎比回调机制更"不稳定",我会这样做。我认为在登录后应用程序的状态发生变化的情况下,通过触发操作,您将允许存储适当地更改状态,这将更有意义。
例如,设置已登录的用户名/显示图片。响应中将有该值,通过调度登录成功操作,存储将采用这些值,并在存储中设置应用程序状态的 SignedInUserName 属性,然后发出该更改。
我对 React-Router 不是很熟悉,也不确定您将如何处理状态更改。
相关文章:
- 如何在JavaScript中将字符串转换为函数引用
- 如何在Javascript中将JSon对象转换为数组
- 使用JS将数组转换为json对象
- 如何使用json将对象列表从java转换为javascript
- jquery动画可以通过编程链接吗
- 偶尔结结巴巴地说“;堆叠的”;translate()上的转换(v4.0.0-alpha40)
- 为什么在单独的函数中应用时转换会闪烁/断断续续(D3)
- 以编程方式将同步代码转换为异步代码
- 将 svg 转换为 base64.以编程方式创建的
- 从JS以编程方式使用CSS转换的干净方法
- 如何以编程方式转换SVG
- 试图找到一种好看的方法来使用函数式编程风格转换这个数组
- 我如何编程一个JS按钮,它也可以在点击和滚动时激活转换
- 有没有一种工具可以从一种编程语言转换为另一种编程
- 通量:异步操作成功时的编程转换
- 以编程方式确定类型转换
- 如何使用javascript(函数式编程)对特定键属性上的字典数组进行分组和转换
- 在iOS编程中将Base64图像转换为文件路径图像
- 如果我计划将网站转换为安卓/iOS 应用程序,是否应该将 iframe 用于网络编程
- 编程一个二进制到十进制的转换形式——我的代码有什么问题?(JavaScript和HTML5)