如何获取所有Reflux操作名称列表和所有这些名称的preEmit挂钩?

时间:2016-12-09 18:55:31

标签: refluxjs

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

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

1 个答案:

答案 0 :(得分:1)

重要提示: Reflux.__keep实际上最初是为了支持从未实现的其他功能而创建的。然而,它也在某些程序中造成内存泄漏。因此,最近默认情况下不存储任何内容。要使其存储在最新版本的Reflux.__keep.useKeep()reflux中,您必须使用reflux-coreReflux.__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内的操作只是循环的一个简单问题: / p>

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