当前位置: 首页 > 知识库问答 >
问题:

在React/Flux中管理存储数据依赖关系

翟冷勋
2023-03-14

第二个存储区是RandomTodolistStore。它的责任是管理随机选择的TODO项目。在我看来,RandomTodoListStore应该使用TodoStore.getTodoItems()通过TodoStore访问TODO项。

function RandomTODOListStore() {
   var $randomTODOs = [];

   dispatcher.register(function(payload) {
        var action = payload.action;

        switch (action.actionType) {
            case Constants.LOAD_RANDOM_TODO:
                loadRandomTODO();
                break;
        }
    });

    function loadRandomTODO() {
        $randomTODOs = selectRandom(TODOStore.getTODOList());
        emit("change");
    }
}

问题在于,如前所述,TodoStore在启动时不会加载TODO项。

问题是:“RandomTodoListStore如何保证TodoStore已经检索了TODO项?”

共有1个答案

公德明
2023-03-14

提出的流量实现使用Waitfor方法来同步存储。我创建了Reflux来更容易地处理这个问题,让商店能够监听其他商店的声音。该特性的效果是,它将保证链中的前一个存储区已经处理了它的数据

接口有点不同,因为回流不依赖于字符串常量来识别操作,所以这里是一个示例。

var TodoActions = Reflux.createActions(['load']);

var todoStore = Reflux.createStore({
    init: function() {
        // Listen to the load action
        this.listenTo(TodoActions.load, this.loadActions);
    },
    loadActions: functions() {
        var loadedActions = [];
        // load your actions into loadedActions
        // and do then the following inside the ajax 
        // callback when it is done:
        this.trigger(loadedActions);
    }
});

var randomTodoStore = Reflux.createStore({
    init: function() {
        // You may listen to stores as well
        this.listenTo(todoStore, onLoadedActions);
    },
    onLoadedActions: function(loadedActions) {
        // loaded actions will be passed in from the
        // dotoStores change event trigger

        // you may do your select random from loaded 
        // actions list   
    }
});

// Invoke the action
TodoActions.load();

希望这有道理。

 类似资料:
  • 我正在使用Gradle的Spring Boot框架。我知道,为了包含一些Spring依赖项,我可以引用“starters”而不显式定义版本;该版本将由我选择的Spring Boot版本控制,它是Spring Boot Gradle插件的版本。示例(省略非相关的分级代码): 请注意,没有为我的应用程序依赖项定义显式版本。 我如何确保我为那些依赖项使用的版本与我的其他Spring Boot依赖项兼容?

  • 我正在尝试构建一个简单的REST服务来学习OSGI。我正在使用Spark Servlet来处理请求。 我将 spark core 作为依赖项嵌入,在 maven 中构建了我的项目,并在部署时在 Karaf 中出现了布线包错误。 看起来我一个接一个地跟踪程序包,一个一个地解决每个错误,仅仅解决依赖关系就需要大约2个小时。显然我做错了什么。。 我应该如何执行此操作,以便使用 spark servlet

  • Maven的核心功能之一是依赖管理。 一旦我们处理多模块项目(由数百个模块/子项目组成),管理依赖项是一项艰巨的任务。 Maven提供高度的控制来管理这些场景。 传递依赖发现 通常情况下,当一个库(比如A)依赖于其他库时,比如说B.如果另一个项目C想要使用A,那么该项目也需要使用库B. Maven有助于避免此类要求发现所需的所有库。 Maven通过读取依赖项的项目文件(pom.xml),找出它们的

  • 我在我的应用程序中使用Webpack,在其中我创建了两个入口点--用于所有JavaScript文件/代码的bundle.js,以及用于所有库(如jQuery和React)的vendors.js。我该怎么做才能使用具有jQuery作为依赖项的插件,并且我也想在vendors.js中拥有这些插件呢?如果那些插件有多个依赖项呢? 目前,我正在尝试使用这个jQuery插件:https://github.c

  • 有什么理由在子pom中使用依赖关系管理部分吗?我正在查看组织中使用继承和聚合的 maven 项目,其中父 pom 和子 pom 都有一个依赖项管理部分。孩子在做什么吗? 我发现这个问题很有帮助,但没有找到我的具体问题的答案——Maven中dependencyManagement和Dependency之间的区别

  • Ember使用NPM和Bower来管理在针对NPM的package.json和针对Bower的bower.json中定义的依赖关系。 例如,您可能需要在开发Ember应用程序时为Ember安装的样式表安装SASS。 要实现此目的,请使用Ember Addons共享可重用库。 如果要安装任何CSS框架或JavaScript datepicker依赖项,请使用Bower包管理器。 Addons Emb