Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/473.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Flux:异步操作成功时的程序化转换_Javascript_Reactjs_Flux_React Router - Fatal编程技术网

Javascript Flux:异步操作成功时的程序化转换

Javascript Flux:异步操作成功时的程序化转换,javascript,reactjs,flux,react-router,Javascript,Reactjs,Flux,React Router,我的工作流程到期了 签名反应.js 更新:问题的改写版本:使用登录成功操作+显示/隐藏登录/索引视图与传递转换回调?触发操作似乎比回调机制更“流畅”,我同意这一点。我认为,在应用程序的状态在登录后发生变化的情况下,通过触发一个操作,您将允许存储适当地改变状态,这将更有意义 例如,在用户名/显示图片中设置signedIn。在您的响应中,通过调度SignInsAccess操作,存储将获取这些值,并在存储中设置应用程序状态的SignedUserName属性,然后发出该更改 我对React路由器不太熟

我的工作流程到期了

签名反应.js



更新:问题的改写版本:使用
登录成功
操作+显示/隐藏登录/索引视图与传递转换回调?

触发操作似乎比回调机制更“流畅”,我同意这一点。我认为,在应用程序的状态在登录后发生变化的情况下,通过触发一个操作,您将允许存储适当地改变状态,这将更有意义

例如,在用户名/显示图片中设置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);
    }
}