如何获取所有 Reflux 动作名称的列表以及所有这些动作的 preEmit 挂钩?

How to get a list of all Reflux actions names and a preEmit hook for all of them?

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

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

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

关于问题:


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!"