bc518174
王天杨
提交两个项目文件
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
import type { HandlerManager, MonitorEventEmitter } from '../types/index.js'
import { useCollector } from './useCollector.js'
import { useIsomorphicLayoutEffect } from './useIsomorphicLayoutEffect.js'
export function useMonitorOutput<Monitor extends HandlerManager, Collected>(
monitor: Monitor & MonitorEventEmitter,
collect: (monitor: Monitor) => Collected,
onCollect?: () => void,
): Collected {
const [collected, updateCollected] = useCollector(monitor, collect, onCollect)
useIsomorphicLayoutEffect(
function subscribeToMonitorStateChange() {
const handlerId = monitor.getHandlerId()
if (handlerId == null) {
return
}
return monitor.subscribeToStateChange(updateCollected, {
handlerIds: [handlerId],
})
},
[monitor, updateCollected],
)
return collected
}
|