Maison  >  Questions et réponses  >  le corps du texte

Basculer l'état actif du bouton dans la boucle v-for dans Vue 3

<p>Je crée un en-tête de filtre dans Vue 3 où vous pouvez sélectionner une catégorie à afficher, vous pouvez donc cliquer sur un commutateur pour basculer le filtre et si vous cliquez sur une autre catégorie, cela désélectionnera les catégories d'activité précédentes, là Il ne peut y avoir qu'une ou aucune catégorie active à la fois. </p> <p>J'ai trouvé quelques exemples, comme ce jsfiddle, qui n'a pas de bouton bascule (cliquez à nouveau pour désélectionner) et n'utilise pas de boucle v-for. Je suis assez sûr de pouvoir convertir cela en une boucle v-for, mais je ne sais pas comment effectuer facilement la commutation et n'avoir qu'une seule catégorie active à la fois. </p> <p>Voici mon code de base : </p> <pre class="brush:html;toolbar:false;"><bouton v-for="catégorie dans contentCategories" @cliquez="" class="bouton-filtre" > {{ catégorie }} </bouton> ≪/pré> <pre class="brush:js;toolbar:false;">const contentCategories = ["catégorie 1", "catégorie 2", "catégorie 3"]; let list = contentStore.resources; const activeCategory = ""; const filteredList = liste .filter((e) => e.category === activeCategory) .map((e) => { retourner e ; }); ≪/pré> <p>Le comportement dont je pense avoir besoin est de stocker la catégorie active dans une chaîne <code>activeCategory</code> et d'appliquer l'étiquette active au bouton correspondant, puis de pouvoir la supprimer si vous cliquez sur le bouton actif. à nouveau Le <code>activeCategory</code>, ou modifie le <code>activeCategory</code> </p> <p>Je suis désolé s'il s'agit d'une solution simple car je suis très nouveau sur Vue. Merci! </p>
P粉046878197P粉046878197419 Il y a quelques jours434

répondre à tous(1)je répondrai

  • P粉588152636

    P粉5881526362023-08-28 00:54:33

    Utiliser l'API combinée

    Solution facile pour le suivi avec des références supplémentaires

    const selectedCategory = ref("")
    const contentCategories = ref(["category 1", "category 2", "category 3"]);
    
    <button
      v-for="category in contentCategories"
      @click="handleClick(category)"
      :class="selectedCategory === category ? 'active' : 'inactive'"
      :key="category"
    >
      {{ category }}
    </button>
    
    handleClick(category) {
       selectedCategory.value = category
    |

    Suivez l'activité des catégories si vous souhaitez implémenter plusieurs capacités de sélection

    const contentCategories = ref([
      {
        name: "Category 1",
        active: false
      },
      ...
    ]);
    
    <button
      v-for="category in contentCategories"
      @click="handleClick(category)"
      :class="category.active ? 'active' : 'inactive'"
      :key="category"
    >
      {{ category }}
    </button>
    
    handleClick(category) {
       找到类别然后设置 active = !active,关闭其他类别
    |

    répondre
    0
  • Annulerrépondre