Heim > Web-Frontend > View.js > So erstellen Sie dynamisch mehrere Komponentenkomponenten in vue3, indem Sie die eingehenden Komponentennamen durchlaufen

So erstellen Sie dynamisch mehrere Komponentenkomponenten in vue3, indem Sie die eingehenden Komponentennamen durchlaufen

王林
Freigeben: 2023-05-11 19:52:04
nach vorne
2198 Leute haben es durchsucht

Hintergrund

Wenn Sie in vue3 eine Komponente verwenden, können Sie eine Komponente dynamisch laden, z. B.

<!--   直接创建  -->
<component :is="Image" />
Nach dem Login kopieren

Dadurch wird die bereits definierte und importierte Bildkomponente geladen, aber wenn Sie die benutzerdefinierten Komponenten, die angezeigt werden müssen, in ein Array einfügen Wenn die Anzeige durchlaufen wird, kann der Erfolg nicht angezeigt werden.

<!-- 动态创建方式 1 -->
<div v-for="(comp, index) in realTimeComponent" :key="index">
    <component :is="comp" />
</div>

<!-- 动态创建方式 2-->
<component  v-for="(comp, index) in realTimeComponent" :key="index" :is="comp" />
Nach dem Login kopieren
<script setup>
import { ref } from "Vue";
import Image from "@/customComponents/Image.vue";
const realTimeComponent = ref(["Image"]);
</script>
或者
<script>
import { ref } from "Vue";
import Image from "@/customComponents/Image.vue";
export default {
        components: {
            Image,
        },
         setup(){
            const realTimeComponent = ref(["Image"]);
         }
}
</script>
Nach dem Login kopieren

Der Anzeigeeffekt ist wie in der Abbildung dargestellt:

So erstellen Sie dynamisch mehrere Komponentenkomponenten in vue3, indem Sie die eingehenden Komponentennamen durchlaufen

Lösung

Nach vielen Versuchen haben wir festgestellt, dass die übergeordnete Komponente der dynamisch erstellten Komponente zwar dynamisch importierte und registrierte untergeordnete Komponenten hat, die durchlaufene Komponente jedoch nicht angezeigt.

Ursache des Problems:

Beim Durchlaufen kann die importierte und in der aktuellen Komponente registrierte Komponente nicht erkannt werden. Es wird davon ausgegangen, dass die Komponente nicht registriert ist, was bedeutet, dass die auf dieser Seite registrierte Komponente erkannt werden kann. <image></image>
但是,单独直接使用<component :is="Image" />Lösung:

Verwenden Sie app.component, um die Komponente global zu registrieren. Dies wird wirksam, wenn Sie eine Schleife durchlaufen, um mehrere Komponenten zu erstellen.

Globale Erstellungsmethode:

// src/customComponents/index.js
import Button from "@/customComponents/Button.vue";
import Text from "@/customComponents/Text.vue";
import Icon from "@/customComponents/Icon.vue";
import Image from "@/customComponents/Image.vue";
const components = {
    install: function (app) {
        app.component("Button", Button).component("Text", Text).component("Icon", Icon).component("Image", Image);
    },
};
export default components;

// main.js
import components from "@/customComponents";
app.use(components);
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonSo erstellen Sie dynamisch mehrere Komponentenkomponenten in vue3, indem Sie die eingehenden Komponentennamen durchlaufen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:yisu.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage