3

使用提供响应的 通量结构ajax 请求
登录表单提交(React 组件)后,我该怎么办? 你能提供一些例子吗?


4

2 回答 2

7

基本上,您需要发出 Ajax 请求,然后创建成功/错误处理程序。在这些处理程序中,您将创建操作以将结果通知您的商店。拥有 AppStore 或 SessionStore 或保存与当前用户和身份验证令牌相关的数据的东西可能是个好主意。当当前用户通过身份验证时,您的控制器视图可以监听该存储并呈现其子级。

于 2014-10-25T23:44:53.187 回答
3

这是我的制作方法:

当我的组件启动时,我会向 Store 发起一个 INIT 操作,该操作最初会获取我需要的数据。这是简化的数据流

登录后,我的图书馆组件被渲染,所以我需要初始化数据(书籍、用户等)

图书馆:

componentDidMount: function() {
  Store.addChangeListener(this._onChange);
  Actions.initialize();
},

如您所见,当我的组件确实挂载时,我触发了一个新操作,我的商店将处理此操作。

店铺:

switch(action.actionType) {

    case Constants.INIT:
      _init().done(function() {
        Store.emitChange();
      });
      break;

我正在调用_init()将返回一个承诺对象的私有函数。当 Promise 实现时,Store 准备好发出它的 change 事件。

_init我模拟一些异步数据加载时,这就是我做出承诺的原因,这里是:

function _init() {

  var loadBooksDeferred = new jQuery.Deferred(),
      loadUsersDeferred = new jQuery.Deferred(),
      loadCategoriesDeferred = new jQuery.Deferred(),
      stateReadyDfd = new jQuery.Deferred();

  _loadBooks(loadBooksDeferred);
  _loadUsers(loadUsersDeferred);
  _loadCategories(loadCategoriesDeferred);

  jQuery
    .when(loadBooksDeferred, loadUsersDeferred, loadCategoriesDeferred)
    .then(stateReadyDfd.resolve, stateReadyDfd.reject);

  return stateReadyDfd;
}
于 2014-10-26T16:40:25.727 回答