我知道使用Reflux.__keep.createdActions
我会获得所有已创建操作的列表。有没有办法知道这些行为的名称?
有没有办法为所有操作定义preEmit
挂钩?
答案 0 :(得分:1)
重要提示: Reflux.__keep
实际上最初是为了支持从未实现的其他功能而创建的。然而,它也在某些程序中造成内存泄漏。因此,最近默认情况下不存储任何内容。要使其存储在最新版本的Reflux.__keep.useKeep()
和reflux
中,您必须使用reflux-core
。 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
内的操作只是循环的一个简单问题: / 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!"