Rendre dynamiquement un composant Vue dans un autre composant
P粉764003519
2023-08-30 20:51:07
<p>Utilisation de<strong>Vue 3.2.41</strong>-@heroicons/vue 2.0.14-inertiajs 1.0-vite 4.0.0</p>
<p>J'utilise ceci pour appeler le composant Vue : </p>
<p><code><TimelineItem icon="CalendarDaysIcon" /></code></p>
<p>Le composant ressemble à ceci : </p>
<pre class="brush:php;toolbar:false;"><template>
<composant :est="icône" />!-- ne fonctionne pas -->
<CalendarDaysIcon /> <!-- fonctionne -->
</modèle>
<configuration du script>
importer {
Icône Jours du Calendrier,
} de '@heroicons/vue/20/solid'
const props = définirProps(['icône'])
</script></pre>
<p>Le code HTML rendu ressemble à ceci :</p>
<pre class="brush:php;toolbar:false;"><calendardaysicon></calendardaysicon> <!-- pas ce que je veux -->
<svg> ... </svg> <!-- correct mais pas dynamique --></pre>
<p>En d'autres termes, lorsque je veux que <code><component :is /></code> restitue le composant, il restitue simplement un <code><calendardaysicon></code> ; marque. Je peux voir qu'il l'a changé en minuscules et je ne sais pas comment le forcer à revenir à PascalCase, je ne suis même pas sûr que cela aiderait la situation. </p>
<p>J'ai un peu simplifié le code, mais la version complète aura une liste de 10 icônes différentes (toutes les parties du package Heroicons utilisant les noms PascalCase) et je veux pouvoir les appeler facilement à partir du composant principal .≪/p>
Essayez :
Utilisez
仅使用包含CalendarDaysIcon
cordesAu lieu de cela, dans le composant principal, transmettez la référence réelle du composant comme ceci :
Ensuite, dans le composant
TimelineItem
, il n'est pas nécessaire de référencer une quelconque icône :Merci à
@Robert Boes
sur le serveur Inertia Discord pour les conseils.