Rendern Sie eine Vue-Komponente dynamisch innerhalb einer anderen Komponente
P粉764003519
P粉764003519 2023-08-30 20:51:07
0
2
539
<p>Verwenden von<strong>Vue 3.2.41</strong>-@heroicons/vue 2.0.14-inertiajs 1.0-vite 4.0.0</p> <p>Ich verwende dies, um die Vue-Komponente aufzurufen: </p> <p><code><TimelineItem icon="CalendarDaysIcon" /></code></p> <p>Die Komponente sieht folgendermaßen aus: </p> <pre class="brush:php;toolbar:false;"><template> <component :is="icon> <!-- funktioniert nicht --> <CalendarDaysIcon /> <!-- funktioniert --> </template> <Skript-Setup> importieren { CalendarDaysIcon, } von '@heroicons/vue/20/solid' const props = defineProps(['icon']) </script></pre> <p>Der gerenderte HTML-Code sieht folgendermaßen aus:</p> <pre class="brush:php;toolbar:false;"><calendardaysicon></calendardaysicon>!-- nicht das, was ich will --> <svg> ... </svg> <!-- korrekt, aber nicht dynamisch --></pre> <p>Mit anderen Worten, wenn ich möchte, dass <code><component :is /></code> die Komponente rendert, wird nur ein leerer <code><calendardaysicon></code> gerendert ; markieren. Ich kann sehen, dass es in Kleinbuchstaben geändert wurde, und ich weiß nicht, wie ich es wieder auf PascalCase zurücksetzen kann. Ich bin mir nicht einmal sicher, ob das der Situation helfen würde. </p> <p>Ich habe den Code etwas vereinfacht, aber die Vollversion wird eine Liste mit 10 verschiedenen Symbolen haben (alle Teile des Heroicons-Pakets verwenden PascalCase-Namen) und ich möchte sie einfach von der Hauptkomponente aus aufrufen können .</p>
P粉764003519
P粉764003519

Antworte allen(2)
P粉697408921

尝试:

P粉107772015

使用仅使用包含CalendarDaysIcon的字符串

相反,在主组件中,传递实际的组件引用,如下所示:

<template>
  <TimelineItem :icon="CalendarDaysIcon" />
</template>

<script setup>
    import {
        CalendarDaysIcon,
    } from '@heroicons/vue/20/solid'

    const props = defineProps(['icon'])
</script>

然后,在TimelineItem组件中,不需要引用任何图标:

<template>
    <component :is="icon" /> <!-- now works -->
</template>

<script setup>
    const props = defineProps(['icon'])
</script>

感谢 Inertia Discord 服务器上的 @Robert Boes 的指导。

Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage