Vue3里动态插槽的类型该如何定义?

如题。
当前在网上搜也没有相关问题...?

<template>
  <div>
    <header>
      <slot name="header" :disabled="disabled" :loading="loading" :submit="submit"></slot>
      <slot name="header-extra" :disabled="disabled" :loading="loading" :submit="submit"></slot>
    </header>
    <ul>
      <li v-for="column in columns" :key="column.key">
        <slot :name="column.key" :formData="formData"></slot>
      </li>
    </ul>
  </div>
</template>

<script setup lang="ts">
import { ref } from 'vue'

const props = withDefaults(
  defineProps<{
    columns: { key: string; label: string; type: 'slot' | 'input' | 'select' }[]
  }>(),
  {
    columns: () => [],
  },
)

const slots = defineSlots<{
  header(props: { disabled: boolean; loading: boolean; submit: (e: MouseEvent) => void }): void
  ['header-extra'](props: {
    disabled: boolean
    loading: boolean
    submit: (e: MouseEvent) => void
  }): void
  // 该如何编写`动态插槽`的类型呢?
}>()

const disabled = ref(false)
const loading = ref(false)
const formData = ref({})
const submit = (e: MouseEvent) => {}
</script>
阅读 395
1 个回答
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Microsoft
子站问答
访问
宣传栏