Est-il possible de passer un composant que les accessoires et les utiliser dans un Composant enfant en Vue?
Dans une Vue 2.0 app, disons que nous avons des composants A, B et C.
A déclare, enregistre et utilise B
Est-il possible de passer à C de A à B?
Quelque chose comme ceci:
<template>
<div class="A">
<B :child_component="C" />
</div>
</template>
Et l'utilisation de C en B, en quelque sorte.
<template>
<div class="B">
<C>Something else</C>
</div>
</template>
La motivation: je veux créer un composant générique B
qui est utilisé dans A
mais reçoit de A
son enfant C
. En fait A
utilisera B
plusieurs fois en passant différents " C " pour elle.
Si cette approche n'est pas correcte, ce qui est la façon correcte de le faire en Vue?
Réponse @Saurabh
Au lieu de passer comme des accessoires, j'ai essayé la suggestion à l'intérieur de B.
<!-- this is where I Call the dynamic component in B -->
<component :is="child_component"></component>
//this is what I did in B js
components: {
equip: Equipment
},
data () {
return {
child_component: 'equip',
_list: []
}
}
Fondamentalement, je suis en train de rendre l'Équipement, mais d'une manière dynamique
Je reçois 3 erreurs dans la console et une page vierge
[Vue avertir]: Erreur lors du rendu de la composante à /home/victor/projetos/tokaai/public/src/composants/EquipmentFormItem.vue:
Uncaught TypeError: Cannot read property 'nom' undefined
TypeError: Cannot read property 'setAttribute' undefined
Apparemment, je suis en train de faire quelque chose de mal
- Êtes-vous sûr que ces erreurs proviennent de ces code seulement, où en êtes-vous à l'aide de
setAttribute
ouname
attribut? - doit être un processus interne. Je ne suis pas le faire dans cette application
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser l'attribut spécial
is
pour faire ce genre de chose. Exemple de composant dynamique et son utilisation peut être trouvé ici.Votre code ressembler à ce qui suit:
En résumé:
Voici la solution pour transférer composant personnalisé grâce à des accessoires d'un autre composant
:is
est attribut spécial, et il sera utilisé pour remplacer votre composant et il sera ignoré si vous essayez de l'utiliser comme un accessoire dans votre composant. Heureusement, vous pouvez utiliser autre chose commeel
et puis la transmettre àcomponent
comme suit:Aucun élément que vous utilisez dans
el
attribut sera utilisé comme un composant enfant. Il peut être html ou la référence de votre composant personnalisé oudiv
par défaut comme indiqué dans la déclaration des constituants.Passant composant personnalisé à prop est un peu délicat. On pourrait supposer que vous déclarez dans une
components
propriété du composant parent et l'utiliser ensuite pourel
attribut mais cela ne fonctionne pas. Au lieu de cela, vous devez avoir votre composant dynamique dansdata
oucomputed
de la propriété de sorte que vous pouvez l'utiliser dans un modèle comme un accessoire. Notez égalementAnotherComponent
n'a pas besoin d'être déclarés danscomponents
de la propriété.Calculée à l'aide de la propriété pour votre composant dynamique permet de basculer entre les composants facilement:
Augmentation
this.count
d'alterner entreAnotherComponent
et simplearticle
élément html.