Javascript Flux:异步操作成功时的程序化转换
我的工作流程到期了 签名反应.jsJavascript Flux:异步操作成功时的程序化转换,javascript,reactjs,flux,react-router,Javascript,Reactjs,Flux,React Router,我的工作流程到期了 签名反应.js 更新:问题的改写版本:使用登录成功操作+显示/隐藏登录/索引视图与传递转换回调?触发操作似乎比回调机制更“流畅”,我同意这一点。我认为,在应用程序的状态在登录后发生变化的情况下,通过触发一个操作,您将允许存储适当地改变状态,这将更有意义 例如,在用户名/显示图片中设置signedIn。在您的响应中,通过调度SignInsAccess操作,存储将获取这些值,并在存储中设置应用程序状态的SignedUserName属性,然后发出该更改 我对React路由器不太熟
更新:问题的改写版本:使用
登录成功
操作+显示/隐藏登录/索引视图与传递转换回调?触发操作似乎比回调机制更“流畅”,我同意这一点。我认为,在应用程序的状态在登录后发生变化的情况下,通过触发一个操作,您将允许存储适当地改变状态,这将更有意义
例如,在用户名/显示图片中设置signedIn。在您的响应中,通过调度SignInsAccess操作,存储将获取这些值,并在存储中设置应用程序状态的SignedUserName属性,然后发出该更改
我对React路由器不太熟悉,也不确定您将如何使用它处理状态更改 是的,我完全同意你。实际上,目前我的应用程序就是这样工作的。但在这种特殊情况下,让我尴尬的是,从处理
登录成功的商店发出更改是不够的。相反,我应该做过渡。从Store进行视图转换很奇怪。我上面的评论是:如果我从Store中执行登录成功
事件&emitChange
,这意味着索引
视图应该呈现/订阅到Store。因此,事件将显示/隐藏视图,而不是转换。我看你说的不是真的。恐怕我对React Router不太熟悉,因此我无法对显示/隐藏的索引视图(而不是转换的索引视图)发表评论。
SignInView ===> AppActionCreators ===> SomeService
| ||
Promise <============= ||
||
|| ======================> SIGN_IN_SUCCESS
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();
});
}
}
class SignIn extends Component, Router.Navigation {
handleSubmit(){
const signInCb = () => this.transitionTo('index', {this.state.data})
AppActionCreators.signIn(this.state.user, this.state.password, signInCb);
}
}