Il est souvent utilisé dans React, mais il peut également être réalisé correctement dans Vue.
Points principaux
- Considérez les modèles comme étant définis par des chaînes
- Exemple : état de la communication API :
pending | resolve | reject - Exemple : distribution d’icônes SNS :
twitter | facebook | instagram | github | line
- Exemple : état de la communication API :
- Créer des composants pour chaque modèle
mise en œuvre
<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>Points
- Mappage d’objets : mappage des chaînes de modèles et des composants
- Composant dynamique : commuté dynamiquement avec
<component :is="..."> - Type Safety : définissez des modèles dans TypeScript avec Union Type
résumé
Si trois modèles de branchement ou plus apparaissent dans v-if, envisagez un modèle de stratégie.
Les composants dynamiques rendent les modèles plus propres et facilitent l’ajout de nouveaux modèles.
hsb.horse