事件
虽然大多数 VSCode API 已被 reactive-vscode 覆盖,但有时你仍然需要创建或监听原始的 VSCode 事件。
useEvent 将原始事件转换为自动销毁的事件:ts
useEventEmitter 创建一个友好的事件发射器,它仍然继承自 EventEmitter: import { defineExtension, useEvent } from 'reactive-vscode'
import { workspace } from 'vscode'
const onDidCreateFiles = useEvent(workspace.onDidCreateFiles)
export = defineExtension(() => {
// 无需手动销毁事件
onDidCreateFiles((e) => {
console.log('创建的文件:', e.files)
})
})
ts
import { defineExtension, useEventEmitter } from 'reactive-vscode'
export = defineExtension(() => {
const myEvent = useEventEmitter<string>([/* 可选的监听器 */])
myEvent.addListener((msg) => {
console.log(`收到消息:${msg}`)
})
myEvent.fire('Hello, World!')
someVscodeApi({
onSomeEvent: myEvent.event,
})
})
你也可以将原始事件转换为友好的事件发射器:
ts
import { defineExtension, useEventEmitter } from 'reactive-vscode'
import { EventEmitter } from 'vscode'
export = defineExtension(() => {
const rawEvent = new EventEmitter<string>()
const myEvent = useEventEmitter(rawEvent, [/* 可选的监听器 */])
})