Es wird häufig in React verwendet, kann aber auch in Vue ordnungsgemäß umgesetzt werden.
Hauptpunkte
- Stellen Sie sich Muster als durch Zeichenfolgen definiert vor
- Beispiel: API-Kommunikationsstatus:
pending | resolve | reject - Beispiel: SNS-Symbolverteilung:
twitter | facebook | instagram | github | line
- Beispiel: API-Kommunikationsstatus:
- Erstellen Sie Komponenten für jedes Muster
Implementierung
<script setup lang="ts"> import { computed, ref } from 'vue'; import TwitterIcon from './TwitterIcon.vue'; import FacebookIcon from './FacebookIcon.vue'; import InstagramIcon from './InstagramIcon.vue';
type IconType = "twitter" | "facebook" | "instagram";
const icons = { twitter: TwitterIcon, facebook: FacebookIcon, instagram: InstagramIcon; }
const iconType = ref<IconType>("twitter");
const currentIconComponent = computed(() => { return icons[iconType.value] })
// function showTwitterIcon // function showFacebookIcon // function showInstagramIcon</script>
<template> <div class="flex gap-1 m-4"> <button @click="showTwitterIcon">Twitter</button> <button @click="showFacebookIcon">Facebook</button> <button @click="showInstagramIcon">Instagram</button> </div>
<component :is="currentIconComponent" /></template>Punkte
- Objektzuordnung: Musterzeichenfolgen und Komponenten zuordnen
- Dynamischer Anteil: Dynamisch umgeschaltet mit
<component :is="..."> - Typsicherheit: Definieren Sie Muster in TypeScript mit Union Type
Zusammenfassung
Wenn in v-if drei oder mehr Verzweigungsmuster auftreten, ziehen Sie ein Strategiemuster in Betracht.
Dynamische Komponenten machen Vorlagen übersichtlicher und erleichtern das Hinzufügen neuer Muster.
hsb.horse