Vue: Fonctionnalité : contenu de secours pour les partiels

Créé le 11 avr. 2016  ·  3Commentaires  ·  Source: vuejs/vue

Les partiels doivent prendre en charge le contenu de secours, tout comme le font les slots. Cela améliorerait considérablement la lisibilité des modèles lors de leur utilisation d'une manière spécifique :
Il existe un composant de base avec une certaine logique (par exemple un dialogue), à ​​partir duquel d'autres composants (par exemple un PromptDialog) doivent être dérivés qui partagent la même logique et le même modèle (externe). Ceci est réalisé en utilisant des partiels similaires à ceux utilisés pour les slots - mais sur une base de composant et non avec des instances.
Un tel modèle ressemblerait à ceci :

<div>
  <div class="header">
    <partial name="header">
      <i class="fa-whatever"></i>
      {{title}}
    </partial>
  </div>
  <div class="body">
    <partial name="body">
      {{{body}}}
    </partial>
  </div>
  <div class="footer">
    <partial name="footer">
      <!-- some stuff for button rendering -->
    </partial>
  </div>
</div>

Sans cette fonctionnalité, je dois mettre le contenu de tous les nœuds partiels en dehors du modèle - et cela devient pire avec les partiels imbriqués.
Aborder les problèmes en utilisant le composant de base dans le modèle des dérivés - donc avoir des instances imbriquées n'est pas pratique, car je devrais rediriger la majorité des données/accessoires et API de l'extérieur (pseudo-dérivés) vers l'intérieur instance (de base).

Commentaire le plus utile

Je dirais que c'est abuser des partiels. C'est une mauvaise idée de faire cela car vos extraits partiels proviennent du parent tout en étant conscients du contexte des données de l'enfant. Il s'agit d'un découplage étroit.

Le composant de dialogue ne doit pas contenir d'état propre car il est purement de présentation. Ne pas transmettre l'état vers le bas. L'état et le contenu affiché doivent appartenir au composant parent qui utilise la boîte de dialogue.

Tous les 3 commentaires

Désolé, je n'ai pas compris pourquoi utiliser un slot au lieu d'un partiel n'est pas une option :sweat_smile:
Y at-il une raison à cela?

Lors de l'utilisation d'emplacements, un _PromptDialog_ pseudo-dérivé aurait le modèle suivant.

<dialog
  :foo.sync="foo"
  >
  <input
    v-model="thePromptedValue"
    slot="body"
    >
</dialog>

Pour chaque attribut _foo_ sur le composant _Dialog_ d'origine, je devrais avoir le même attribut sur le _PromptDialog_ extérieur et le transmettre à l'intérieur. Il en va de même pour toutes les méthodes définies sur _Dialog_ : j'ai besoin de définir des proxys qui transmettent l'appel à l'inner. C'est gênant et va à l'encontre de l'idée derrière l'extension de composant/l'héritage de classe.

Je dirais que c'est abuser des partiels. C'est une mauvaise idée de faire cela car vos extraits partiels proviennent du parent tout en étant conscients du contexte des données de l'enfant. Il s'agit d'un découplage étroit.

Le composant de dialogue ne doit pas contenir d'état propre car il est purement de présentation. Ne pas transmettre l'état vers le bas. L'état et le contenu affiché doivent appartenir au composant parent qui utilise la boîte de dialogue.

Cette page vous a été utile?
0 / 5 - 0 notes