切换Vue 3中v-for循环中按钮的活动状态
P粉046878197
P粉046878197 2023-08-27 09:44:54
[HTML讨论组]
<p>我正在Vue 3中创建一个过滤器头部,在其中你可以选择一个类别进行查看,因此你可以点击切换过滤器的开关,如果你点击另一个类别,它将取消选择之前的活动类别,一次只能有一个或没有活动类别。</p> <p>我找到了一些示例,比如这个jsfiddle,它没有可切换的按钮(再次点击取消选择)并且没有使用v-for循环。我相当有信心可以将其转换为v-for循环,但我不知道如何轻松地进行切换和一次只能有一个活动类别的操作。</p> <p>这是我的基本代码:</p> <pre class="brush:html;toolbar:false;">&lt;button v-for=&quot;category in contentCategories&quot; @click=&quot;&quot; class=&quot;filter-button&quot; &gt; {{ category }} &lt;/button&gt; </pre> <pre class="brush:js;toolbar:false;">const contentCategories = [&quot;category 1&quot;, &quot;category 2&quot;, &quot;category 3&quot;]; let list = contentStore.resources; const activeCategory = &quot;&quot;; const filteredList = list .filter((e) =&gt; e.category === activeCategory) .map((e) =&gt; { return e; }); </pre> <p>我认为我需要的行为是将活动类别存储在<code>activeCategory</code>字符串中,并将活动标签应用于相应的按钮,然后能够如果再次点击活动按钮,则移除该<code>activeCategory</code>,或者如果点击了不同的按钮,则更改<code>activeCategory</code>。</p> <p>如果这是一个简单的解决方案,我很抱歉,因为我对Vue非常陌生。谢谢!</p>
P粉046878197
P粉046878197

全部回复(1)
P粉588152636

使用组合 API

使用额外的引用进行跟踪的简单解决方案

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
|

如果您想要实现多个选择能力,则跟踪类别活动

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,关闭其他类别
|
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号