logo hsb.horse
← Zur Blog-Übersicht

Blog

Berücksichtigen Sie Strategiemuster, wenn V-IF-Zweige in Vue zunehmen

Wenn es drei oder mehr Muster bedingter Verzweigungen mit v-if gibt, sollten Sie die Implementierung eines Strategiemusters zum dynamischen Wechseln von Komponenten in Betracht ziehen. Verbesserte Lesbarkeit und Wartbarkeit.

Veröffentlicht:

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
  • 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.