Flux架构——如何在控制器中知道来自action的异步事件何时完成

Flux architecture - how to know in controller when async event from action is completed

本文关键字:action 异步 事件 何时完 架构 控制器 Flux      更新时间:2023-09-26

我正在学习flux架构。我正在尝试添加新用户。当用户单击UI上的save按钮时,在我的控制器中,我调用动作创建者的createUser函数来启动异步请求:

    addNewUser: function () {
        HdfsUsersActions.createUser($scope.newUser);
    }

动作创建器功能:

    createUser: function (user) {
        return restService.createHdfsUser(user).then(function (data) {
            flux.dispatch('platform-manager-ADD_USER', data);
        });
    }

然后我需要知道异步请求何时结束,其状态隐藏用户在html中添加UI表单。正确的方法是什么?

我可以这样做:

HdfsUsersActions.createUser($scope.newUser).then(function() {
   //hide user add form on UI
});

但这似乎不是正确的方法,因为在flux架构下,控制器获取数据的唯一方法是从store。在这里,使用then似乎打破了这一规则,因为数据来自action creator

当您收到异步调用的应答时,您将调度事件platform-manager-ADD_USER:

flux.dispatch('platform-manager-ADD_USER', data);

然后,您应该在存储中侦听此事件,并使用接收到的data更新自身。然后,所有侦听此更改的组件将接收更新并在需要时呈现自己。