Vue3 按钮切换示例(启动 / 关闭互斥显示)

Vue3 按钮切换示例(启动/关闭互斥显示)

我给你写一个最简、可直接运行的 Vue3 示例:

  • 只有启动关闭两个按钮
  • 永远只显示其中一个
  • 点击切换状态
  • 用 Vue3 组合式 API(<script setup>

完整代码

vue 复制代码
<template>
  <!-- 按钮容器 -->
  <div class="btn-box">
    <!-- 启动按钮:只有 isClosed 为 true 时显示 -->
    <button 
      v-if="isClosed" 
      @click="switchStatus"
      class="start-btn"
    >
      启动
    </button>

    <!-- 关闭按钮:只有 isClosed 为 false 时显示 -->
    <button 
      v-else 
      @click="switchStatus"
      class="stop-btn"
    >
      关闭
    </button>
  </div>
</template>

<script setup>
import { ref } from 'vue'

// 状态:true = 显示启动按钮 | false = 显示关闭按钮
const isClosed = ref(true)

// 切换状态函数
const switchStatus = () => {
  isClosed.value = !isClosed.value
}
</script>

<style scoped>
.btn-box {
  margin: 20px;
}
.start-btn {
  padding: 8px 16px;
  background: #409eff;
  color: white;
  border: none;
  border-radius: 4px;
  cursor: pointer;
}
.stop-btn {
  padding: 8px 16px;
  background: #f56c6c;
  color: white;
  border: none;
  border-radius: 4px;
  cursor: pointer;
}
</style>

核心逻辑说明

  1. 状态控制

    • isClosed 响应式变量控制显示哪个按钮
    • 初始值 true → 默认显示启动按钮
  2. 互斥显示

    • v-if="isClosed" → 为 true 显示启动
    • v-else → 显示关闭
    • 两个按钮永远只出现一个
  3. 点击切换

    • 点击任意按钮触发 switchStatus()
    • 执行 isClosed.value = !isClosed.value 取反状态
    • 视图自动更新

效果

  • 页面刚打开:显示 蓝色启动按钮
  • 点击启动按钮:按钮变成 红色关闭按钮
  • 点击关闭按钮:变回 蓝色启动按钮

总结

  1. 用一个 ref 变量控制按钮显示隐藏
  2. v-if/v-else 实现按钮互斥展示
  3. 点击取反状态值即可完成切换,简单高效
相关推荐
小金鱼Y1 小时前
从进程线程到 async/await,一文吃透前端异步核心原理
前端·javascript
星空露珠1 小时前
迷你世界UGC3.0脚本Wiki角色模块管理接口 Actor
开发语言·数据库·算法·游戏·lua
SuperEugene1 小时前
前端代码注释规范:Vue 实战避坑,让 3 年后的自己还能看懂代码|项目规范篇
前端·javascript·vue.js
我星期八休息1 小时前
深入理解哈希表
开发语言·数据结构·c++·算法·哈希算法·散列表
进击的尘埃2 小时前
用声明式 YAML Schema 驱动 LLM 做 `Code Review` 自动化
javascript
寻寻觅觅☆2 小时前
东华OJ-进阶题-19-排队打水问题(C++)
开发语言·c++·算法
前进的李工2 小时前
LangChain使用之Model IO(提示词模版之PromptTemplate)
开发语言·人工智能·python·langchain
kyriewen2 小时前
JavaScript 数据类型全家福:谁是大哥大,谁是小透明?
前端·javascript·ecmascript 6