Flux架构 - 如何在控制器中了解来自操作的异步事件何时完成

时间:2015-10-14 16:27:49

标签: javascript reactjs reactjs-flux flux

我正在学习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

1 个答案:

答案 0 :(得分:0)

当您收到来自异步通话的回答时,您将发送事件platform-manager-ADD_USER

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

然后,您应该在商店中收听此事件,并使用收到的data更新自己。然后,听取此更改的所有组件都将收到更新并在需要时自行重新呈现。