Memaparkan komponen Vue secara dinamik dalam komponen lain
P粉764003519
P粉764003519 2023-08-30 20:51:07
0
2
576
<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粉764003519
P粉764003519

membalas semua(2)
P粉697408921

Cuba:

P粉107772015

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.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan