【问题标题】:How to get a list of all Reflux actions names and a preEmit hook for all of them?如何获取所有 Reflux 操作名称的列表和所有这些操作的 preEmit 挂钩?
【发布时间】:2023-03-14 19:40:01
【问题描述】:

我知道使用Reflux.__keep.createdActions 我会得到一个创建的所有操作的列表。有没有办法知道这些动作的名称?

有没有办法为所有操作定义一个preEmit 挂钩?

【问题讨论】:

    标签: refluxjs


    【解决方案1】:

    重要提示Reflux.__keep 实际上最初是为了支持另一个从未实现的功能而创建的。然而,它也在某些程序中造成内存泄漏。因此,它最近被默认为不存储任何东西。要让它存储任何你必须在最新版本的refluxreflux-core 中使用的Reflux.__keep.useKeep()Reflux.__keep 不是 API 的记录部分,因此对其进行的更改不一定遵循语义版本控制。从 Reflux 的 v5.0.2 开始,useKeep() 需要 Reflux.__keep 来存储任何内容。

    关于这个问题:


    1)Reflux.__keep 中有一个createdActions 属性,它是一个包含迄今为止所有创建的动作的数组(当然,如果你做了useKeep() 的事情)。每个动作都应该有一个actionName 属性,告诉您创建它时提供的动作名称:

    Reflux.__keep.useKeep()
    
    Reflux.createActions(['firstAction', 'secondAction']);
    
    console.log(Reflux.__keep.createdActions[0].actionName) // <-- firstAction
    console.log(Reflux.__keep.createdActions[1].actionName) // <-- secondAction
    

    2) preEmit 钩子可以在事后分配给动作,因此将它们分配给 Reflux.__keep.createdActions 内的动作将是一个简单的循环问题:

    Reflux.__keep.useKeep()
    
    var Actions = Reflux.createActions(['firstAction', 'secondAction']);
    
    var total = Reflux.__keep.createdActions.length;
    
    for (var i=0; i<total; i++) {
        Reflux.__keep.createdActions[i].preEmit = function(arg) { console.log(arg); };
    }
    
    Actions.firstAction('Hello');   // <- preEmit outputs "Hello"
    Actions.secondAction('World!'); // <- preEmit outputs "World!"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-04-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多