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. 点击取反状态值即可完成切换,简单高效
相关推荐
sycmancia20 分钟前
Qt——编辑交互功能的实现
开发语言·qt
石山代码1 小时前
C++ 内存分区 堆区
java·开发语言·c++
无风听海1 小时前
C# 隐式转换深度解析
java·开发语言·c#
放下华子我只抽RuiKe52 小时前
React 从入门到生产(四):自定义 Hook
前端·javascript·人工智能·深度学习·react.js·自然语言处理·前端框架
一只大袋鼠2 小时前
Git 进阶(二):分支管理、暂存栈、远程仓库与多人协作
java·开发语言·git
LuminousCPP2 小时前
数据结构 - 线性表第四篇:C 语言通讯录优化升级全记录(踩坑 + 思考)
c语言·开发语言·数据结构·经验分享·笔记·学习
XinZong2 小时前
OpenClaw 实现双重心跳(Heartbeat)+ clawreach虾聊项目实现
javascript
web3.08889993 小时前
1688 图搜接口(item_search_img / 拍立淘) 接入方法
开发语言·python
один but you3 小时前
从可变参数到 emplace:现代 C++ 性能优化的核心组合
java·开发语言
还有多久拿退休金4 小时前
一张栈的图,治好你面试答不出 script 阻塞的病
前端·javascript