Je ne sais pas comment créer du texte modifiable pour un composant réutilisable dans Vue Js
P粉957723124
P粉957723124 2023-09-03 22:33:40
0
1
522
<p>Je crée un composant d'onglet réutilisable en regardant un didacticiel. Après l'avoir regardé, j'ai compris comment ça fonctionnait. Cependant, pour mon projet, je dois créer des onglets avec un titre qui peut être modifié puisqu'il s'agit d'un composant réutilisable, je dois donc changer le titre pour chaque nouvel onglet mais je n'ai pas encore compris. Découvrez comment. J'ai besoin d'une manière ou d'une autre d'obtenir le titre du composant TabsWrapper que j'ai ajouté à la page</p> <pre class="brush:php;toolbar:false;"><div class="tab_header">{{title}}</div></pre> <p>Ensuite, laissez cet en-tête modifier le texte à l'intérieur de ce div, qui est l'en-tête principal du composant TabsWrapper. </p> <pre class="brush:php;toolbar:false;"><div class="tab_header">{{title}}</div></pre> <p>Mon code : Le premier est le code hors composant que j'ai ajouté à la page d'accueil du site Web. </p> <pre class="brush:php;toolbar:false;"><TabsWrapper> <Titre de l'onglet="Onglet 1">Bonjour 1</Tab> <Titre de l'onglet="Onglet 2">Bonjour 2 </Tab> <Titre de l'onglet="Onglet 3">Bonjour 3</Tab> <Titre de l'onglet="Onglet 4">Bonjour 4</Tab> </TabsWrapper></pre> <p>Le second est le code à l'intérieur du composant responsable de TabsWrapper</p> <pre class="brush:php;toolbar:false;"><template> <div class="onglets"> <div class="tab_header"></div> <ul class="tabs_header"> <li v-for="titre dans tabTitres" :key="titre" @click="selectedTitle = titre" :class=" {sélectionné : titre ==Titre sélectionné}" > {{ titre }} ≪/li> </ul> <emplacement /> </div> </modèle> <script> importer { ref} depuis 'vue' ; importer { fournir } depuis 'vue' ; exporter par défaut{ configuration(accessoires,{slots}){ const tabTitles=ref(slots.default().map((tab)=> tab.props.title)) const selectedTitle=ref(tabTitles.value[0]) fournir("Titre sélectionné", Titre sélectionné) retourner{ Titre sélectionné, ongletTitres, } } } </script></pre> <p>Ce code obtient chaque titre de l'onglet</p> <pre class="brush:php;toolbar:false;"><Tab title="Tab 1">Bonjour 1</Tab></pre> <p>Ce code le rend</p> <pre class="brush:php;toolbar:false;"><li v-for="titre dans tabTitres" :key="titre" @click="selectedTitle = titre" :class=" {sélectionné : titre ==titre sélectionné}" > {{ titre }} </li></pre> <p>J'ai essayé de répéter la même technique et cela a fonctionné, mais je pense qu'il existe une meilleure façon</p> <p> <pre class="snippet-code-html lang-html Prettyprint-override"><code> <div class="tab_header" v-for="headtitle in headTitles" :key="headtitle">{{headtitle}}</div> <ul class="tabs_header"> <li v-for="titre dans l'ongletTitres" :key="titre" @click="selectedTitle = titre" :class=" {selected : title ==selectedTitle}" > {{ titre }} ≪/li> </ul> <emplacement /> </div> </modèle> <script> importer { ref} depuis 'vue' ; importer { fournir } depuis 'vue' ; exporter par défaut{ configuration(accessoires,{slots}){ const tabTitles=ref(slots.default().map((tab)=> tab.props.title)) const headTitles=ref(slots.default().map((tab)=>tab.props.headtitle)) const selectedTitle=ref(tabTitles.value[0]) fournir("Titre sélectionné", Titre sélectionné) retourner{ Titre sélectionné, ongletTitres, titres de tête, } } } </script></code></pre> </p>
P粉957723124
P粉957723124

répondre à tous(1)
P粉418351692

Vous pouvez simplement passer les props dans la balise script et y accéder directement en utilisant ce mot-clé et le nom de la prop.

export default {
  props: ['foo'],
  created() {
    // props are exposed on `this`
    console.log(this.foo)
  }
}

Dans une balise de modèle comme celle-ci

<span>{{ foo }}</span>

Vous n'avez pas besoin d'utiliser ref, vous pouvez simplement utiliser v-for directement et parcourir les éléments du tableau.

<li v-for="(item, index) in foo">
  {{item}}
</li>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal