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! vueFlowRef.value = el.value!
}) })
useHooks(emit, hooks.value) useHooks(emit, hooks)
provide(Slots, useSlots()) provide(Slots, useSlots())
+6 -5
View File
@@ -1,3 +1,4 @@
import type { Ref } from 'vue'
import type { Emits, FlowHooks } from '~/types' import type { Emits, FlowHooks } from '~/types'
// flow event hooks // flow event hooks
@@ -48,10 +49,11 @@ export const createHooks = (): FlowHooks => ({
updateNodeInternals: createEventHook(), updateNodeInternals: createEventHook(),
}) })
const bind = (emit: Emits, hooks: FlowHooks) => { export default (emit: Emits, hooks: Ref<FlowHooks>) => {
for (const [key, value] of Object.entries(hooks)) { onBeforeMount(() => {
for (const [key, value] of Object.entries(hooks.value)) {
const listener = (data: any) => { const listener = (data: any) => {
emit(key as any, data) emit(key as Emits extends (event: infer Event) => void ? Event : never, data)
} }
value.on(listener) value.on(listener)
@@ -60,6 +62,5 @@ const bind = (emit: Emits, hooks: FlowHooks) => {
value.off(listener) value.off(listener)
}) })
} }
})
} }
export default (emit: Emits, hooks: FlowHooks) => bind(emit, hooks)