Cet article vous donnera une compréhension détaillée du slot de portée de vue. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer. J'espère qu'il sera utile à tout le monde.
Les emplacements Vue sont un excellent moyen d'injecter du contenu d'un composant parent dans un composant enfant. (Partage de vidéos d'apprentissage : tutoriel vidéo vue)
Ce qui suit est un exemple de base Si nous ne fournissons aucun slot
contenu du parent, ajoutez-le simplement au parent Le contenu sera utilisé comme contenu de sauvegarde. <slot></slot>
// ChildComponent.vue <template> <div> <slot> Fallback Content </slot> </div> </template>
// ParentComponent.vue <template> <child-component> Override fallback content </child-component> </template>
<div> Override fallback content </div>
. Donc si notre composant a un champ de données nommé slot
, nous pouvons facilement l'ajouter comme ceci. name
<template> <child-component> {{ text }} </child-component> </template> <script> export default { data () { return { text: 'hello world', } } } </script>
Tutoriel vue.js]
Pourquoi avons-nous besoin d'emplacements de portéeRegardons un autre exemple, en supposant que nous ayons un composant et ArticleHeader
contient des informations sur l'article. data
// ArticleHeader.vue <template> <div> <slot v-bind:info="info"> {{ info.title }} </slot> </div> </template> <script> export default { data() { return { info: { title: 'title', description: 'description', }, } }, } </script>
, le contenu de secours restitue slot
. info.title
// ParentComponent.vue <template> <div> <article-header /> </div> </template>
sera affiché. title
Bien que nous puissions modifier rapidement le contenu d'un emplacement en ajoutant une expression de modèle à l'emplacement, si nous voulons effectuer un rendu à partir d'un composant enfant
, que va-t-il se passer ?info.description
// Doesn't work! <template> <div> <article-header> {{ info.description }} </article-header> </div> </template>
. TypeError: Cannot read property ‘description’ of undefined
objet. info
En bref, les slots scoped permettent au contenu des slots de notre composant parent d'accéder aux données trouvées uniquement dans les composants enfants. Par exemple, nous pouvons utiliser des emplacements limités pour accorder aux composants parents l'accès à . info
v-bind
disponible en utilisant slot
info
v-slot
slot
disponible à l'objet parent, nous pouvons lier l'objet info
en tant que propriété sur l'emplacement . Ces propriétés délimitées sont appelées info
accessoires de slot.
// ArticleHeader.vue <template> <div> <slot v-bind:info="info"> {{ info.title }} </slot> </div> </template>
et <template>
pour accéder à tous les accessoires de slot. v-slot
// ParentComponent.vue <template> <div> <child-component> <template v-slot="article"> </template> </child-component> </div> </template>
) seront disponibles en tant que propriétés de l'objet info
, et nous pouvons facilement changer notre article
en Display slot
contenu. description
// ParentComponent.vue <template> <div> <child-component> <template v-slot="article"> {{ article.info.description }} </template> </child-component> </div> </template>
RésuméBien que l'emplacement du scope Vue soit un très simple Le concept consistant à rendre les données des sous-composants accessibles au contenu des emplacements peut être utile pour concevoir d'excellents composants. En conservant les données au même endroit et en les liant à d’autres emplacements, la gestion des différents états devient plus claire.
Adresse originale : https://learnvue.co/2021/03/when-why-to-use-vue-scoped-slots/Auteur : Ashish LahotiPour plus de connaissances liées à la programmation, veuillez visiter :Adresse de traduction : https://segmentfault.com/a/1190000039801512
Introduction à la programmation ! !
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!