代码之家  ›  专栏  ›  技术社区  ›  Hugo

如何将Flux连接到Sinatra API

  •  0
  • Hugo  · 技术社区  · 11 年前

    我将React用于一个web应用程序,我已经开始学习Flux。我喜欢单向数据流的概念,但我在理解如何连接到API时遇到了一些问题。

    我有一个用辛纳屈语写的后端。我所困惑的是,数据是如何从与组件的交互流到后端,然后再返回的?数据库和Flux所称的商店是两个不同的东西吗?

    我的解释方式是这样的:

    用户与React View交互=>

    Action Creator将数据发送到后端=>

    后端用新数据/成功/错误=>

    Action Creator将动作和响应发送给Dispatcher=>

    调度器看到该动作并基于该动作调用回调, 向其传递后端响应=>

    商店使用后端响应=>

    商店将改变事件和数据发送到React View=>

    React View渲染=>

    (循环重复)

    Flux flow

    让我困惑的是商店的运作方式。我需要两个商店吗?还是后端应该是商店?

    1 回复  |  直到 11 年前
        1
  •  0
  •   Henrik Andersson user2120121    11 年前

    不,你“只是”拥有一个商店——通常在一个商店-一个组件的关系中考虑它是有帮助的。注意,这应该与一粒盐一起考虑,因为肯定有可能有几个商店连接到一个组件,反之亦然。

    有几种方法可以实现后端通信,但是 通常是这样做的,通常使用 Reflux implementation 通量(因为我认为它更直接,并且遵循与React组件大致相同的概念):

    var SomeStore = Reflux.createStore({
        getInitialState: function () {
             //called when store is created
    
             var ApiPromise = MyApi.get('/my-resource-path/');
             ApiPromise.success(function (data) {
                  this.data = data;
                  this.triggerUpdateOfComponent(this.data);
             }.bind(this));
        }
    });
    

    仅使用普通的Flux实现,您可以在Dispatcher中执行此操作,当应用程序开始加载时,您可以通过action Creator触发一个操作,并告诉Dispatcher开始执行其工作。

    为了有助于商店的摸索,可以将其视为处理与组件数据相关的逻辑和操作的容器。