MobX 中文文档

  开始纠错

Spy

用法: spy(listener). 注册一个全局的 spy 监听器来监听 MobX 发生的所有事件。 这相当于将 observe 监听器一次性附加到 所有 observables,也包括通知正在运行的 (trans/re)actions 和 computations。 使用的例子如:mobx-react-devtools

使用 spy 监听所有的 action:

spy((event) => {
    if (event.type === 'action') {
        console.log(`${event.name} with args: ${event.arguments}`)
    }
})

Spy 监听器总是接受一个对象,通常至少有 type 字段。默认状态下,spy 会发出下列事件:

事件 字段 嵌套
action name, target (scope), arguments, fn (source function of the action yes
transaction name, target (scope) yes
scheduled-reaction object (Reaction instance) no
reaction object (Reaction instance), fn (source of the reaction) yes
compute object (ComputedValue instance), target (scope), fn (source) no
error message no
update (array) object (the array), index, newValue, oldValue yes
update (map) object (observable map instance), name, newValue, oldValue yes
update (object) object (instance), name, newValue, oldValue yes
splice (array) object (the array), index, added, removed, addedCount, removedCount yes
add (map) object, name, newValue yes
add (object) object, name, newValue yes
delete (map) object, name, oldValue yes
create (boxed observable) object (ObservableValue instance), newValue yes

注意,这些事件都具有签名 { spyReportEnd: true, time? }。 这些事件可能没有 type 字段,但他们是部分早期触发的事件具有 spyReportStart: true。 事件可能表示事件的结束,之后具有子事件的事件组被创建。 事件也可能报告总执行时间。

observable 值的 spy 事件与传递给 observe 的事件相同。详见 intercept & observe

你也可以发出你自己的 spy 事件。详见 extras.spyReport, extras.spyReportStartextras.spyReportEnd