Rumah  >  Soal Jawab  >  teks badan

Memaparkan komponen Vue secara dinamik dalam komponen lain

<p>Menggunakan<strong>Vue 3.2.41</strong>-@heroicons/vue 2.0.14-inertiajs 1.0-vite 4.0.0</p> <p>Saya menggunakan ini untuk memanggil komponen Vue: </p> <p><kod><TimelineItem icon="CalendarDaysIcon" /></code></p> <p>Komponen kelihatan seperti ini: </p> <pre class="brush:php;toolbar:false;"><template> <komponen :is="ikon" <!-- tidak berfungsi --> <CalendarDaysIcon /> <!-- berfungsi --> </template> <persediaan skrip> import { CalendarDaysIcon, } daripada '@heroicons/vue/20/solid' const props = defineProps(['icon']) </script></pre> <p>HTML yang diberikan kelihatan seperti ini:</p> <pre class="brush:php;toolbar:false;"><calendardaysicon></calendardaysicon> <!-- bukan yang saya mahu --> <svg> ... </svg> <!-- betul tetapi tidak dinamik <p>Dalam erti kata lain, apabila saya mahu <code><komponen :is /></code> untuk memaparkan komponen, ia hanya menjadikan beberapa <code><calendardaysicon></code> ; Saya dapat melihat bahawa ia telah menukarnya kepada huruf kecil dan saya tidak tahu bagaimana untuk memaksanya kembali ke PascalCase, saya tidak pasti sama ada itu akan membantu keadaan. </p> <p>Saya telah mempermudahkan sedikit kod, tetapi versi penuh akan mempunyai senarai 10 ikon berbeza (semua bahagian pakej Heroicons menggunakan nama PascalCase) dan saya mahu dapat memanggilnya dengan mudah daripada komponen utama .</p>
P粉764003519P粉764003519415 hari yang lalu508

membalas semua(2)saya akan balas

  • P粉697408921

    P粉6974089212023-08-31 16:55:02

    Cuba:

    balas
    0
  • P粉107772015

    P粉1077720152023-08-31 12:44:09

    String menggunakan 仅使用包含CalendarDaysIcon

    Sebaliknya, dalam komponen utama, luluskan rujukan komponen sebenar seperti ini:

    <template>
      <TimelineItem :icon="CalendarDaysIcon" />
    </template>
    
    <script setup>
        import {
            CalendarDaysIcon,
        } from '@heroicons/vue/20/solid'
    
        const props = defineProps(['icon'])
    </script>

    Kemudian, dalam komponen TimelineItem, tidak perlu merujuk sebarang ikon:

    <template>
        <component :is="icon" /> <!-- now works -->
    </template>
    
    <script setup>
        const props = defineProps(['icon'])
    </script>

    Terima kasih kepada @Robert Boes pada pelayan Inertia Discord untuk bimbingan.

    balas
    0
  • Batalbalas