开发者问题收集

Vue3 如何用 Composition API 实现动态组件?

2022-09-10
991

我想在 Vue3 中使用 Composition API 的动态组件功能。使用 Options API 没有任何问题。我遵循了以下说明: 链接

这是我的代码:

<script setup>
import { ref } from "vue";
import General from "../components/ContractGeneral.vue";
import Networks from "../components/ContractDetails.vue";
const tabs = {
  General,
  Networks,
};
let currentTab = ref("Networks");
</script>

<template>
  <main>
    <nav>
      <ul>
        <li v-for="tab in tabs" :key="tab" @click="currentTab = tab">
          <div>
            <p>{{ tab }}</p>
          </div>
        </li>
      </ul>
      <div></div>
    </nav>
    <section>
      <keep-alive>
        <component :is="tabs[currentTab]"></component>
      </keep-alive>
    </section>
  </main>
</template>

问题是,在我的情况下,{{tab}} 显示的是完整的组件对象,而不仅仅是像“General”这样的名称。它显示的内容如下:“src/components/ContractGeneral.vue”、“__hmrId”:“f8a99314”

我该如何修复此错误?

1个回答

您可以从 v-for 循环中获取 tab key ,如下所示:

<li v-for="(tab,key,index) in tabs" :key="tab" @click="currentTab = key">
    <div>
     <p>{{ key }}</p>
    </div>
  </li>

Boussadjra Brahim
2022-09-10