refactor(store): re-bind hooks on mount and use hooks ref

This commit is contained in:
braks
2022-08-01 21:10:14 +02:00
committed by Braks
parent d468fb7f1d
commit 8b02d7d3b3
2 changed files with 15 additions and 14 deletions
@@ -127,7 +127,7 @@ onMounted(() => {
vueFlowRef.value = el.value!
})
useHooks(emit, hooks.value)
useHooks(emit, hooks)
provide(Slots, useSlots())
+14 -13
View File
@@ -1,3 +1,4 @@
import type { Ref } from 'vue'
import type { Emits, FlowHooks } from '~/types'
// flow event hooks
@@ -48,18 +49,18 @@ export const createHooks = (): FlowHooks => ({
updateNodeInternals: createEventHook(),
})
const bind = (emit: Emits, hooks: FlowHooks) => {
for (const [key, value] of Object.entries(hooks)) {
const listener = (data: any) => {
emit(key as any, data)
export default (emit: Emits, hooks: Ref<FlowHooks>) => {
onBeforeMount(() => {
for (const [key, value] of Object.entries(hooks.value)) {
const listener = (data: any) => {
emit(key as Emits extends (event: infer Event) => void ? Event : never, data)
}
value.on(listener)
tryOnScopeDispose(() => {
value.off(listener)
})
}
value.on(listener)
tryOnScopeDispose(() => {
value.off(listener)
})
}
})
}
export default (emit: Emits, hooks: FlowHooks) => bind(emit, hooks)