最简单但完整的 Vue 响应式示例(一个简单的计数器按钮)

1、先创建项目,如果不会,请移步 从零开始 Vue.js

2、修改 App.vue 代码,如下:

复制代码
<template>
  <button @click="count++">{{ count }}</button>
</template>

<script setup>
import { ref } from 'vue'
const count = ref(0)
</script>

<style scoped>
button {
  padding: 10px 20px;
  font-size: 16px;
  cursor: pointer;
}
</style>

这样我们就得到了一个 点击会增长数字的按钮。

代码讲解:

📦 整体结构

Vue 单文件组件(.vue 文件)由三部分组成:模板、逻辑、样式。

🎨 第一部分:模板(Template)

复制代码
<template>
  <button @click="count++">{{ count }}</button>
</template>

详细解释:

  • <button>:HTML 按钮元素

  • @click="count++":Vue 的事件监听

    • @click 是 v-on:click 的简写

    • 当按钮被点击时,执行 count++ 表达式

    • count++ 意思是 count = count + 1

  • {``{ count }}:Vue 的插值语法(双花括号)

    • 显示变量 count 的当前值

    • 当 count 变化时,这里会自动更新

效果:按钮上显示数字,每次点击数字增加 1

🧠 第二部分:逻辑(Script)

复制代码
<script setup>
import { ref } from 'vue'
const count = ref(0)
</script>

详细解释:

import { ref } from 'vue'
  • 从 Vue 框架中导入 ref 函数

  • ref 用于创建响应式数据(数据变化时,页面自动更新)

const count = ref(0)
  • 创建响应式变量 count,初始值为 0

  • ref(0) 返回一个对象,需要通过 .value 访问/修改

    • 读取:count.value

    • 修改:count.value = 5

  • 但在模板中 (<template>)使用 count 时,不需要写 .value,Vue 会自动解包

<script setup>
  • 这是 Vue 3 的组合式 API 语法糖

  • 让代码更简洁

  • 声明的变量/函数可以直接在模板中使用

🎭 第三部分:样式(Style)

复制代码
<style scoped>
button {
  padding: 10px 20px;
  font-size: 16px;
  cursor: pointer;
}
</style>

详细解释:

scoped 关键字
  • 样式只作用于当前组件,不会影响其他组件

  • Vue 会给当前组件的元素添加特殊属性(如 data-v-xxxx),让样式只匹配它们

CSS 属性说明
属性 值 作用
padding 10px 20px 内边距:上下10px,左右20px
font-size 16px 文字大小16像素
cursor pointer 鼠标悬停时变成手型(👆),表示可点击

🔄 完整工作流程

复制代码
1. 页面加载
   ↓
2. 执行 <script setup>
   - 导入 ref
   - 创建 count = 0
   ↓
3. 渲染 <template>
   - 按钮显示 "0"
   ↓
4. 用户点击按钮
   ↓
5. 触发 @click="count++"
   - 执行 count.value = count.value + 1
   - count 变成 1
   ↓
6. Vue 检测到 count 变化
   ↓
7. 自动重新渲染按钮
   - 按钮显示 "1"
   ↓
8. 重复步骤 4-7...

📊 关键概念总结

概念 作用 示例
响应式数据 数据变化自动更新页面 ref(0)
事件监听 响应用户操作 @click="..."
插值语法 在模板中显示数据 {``{ count }}
作用域样式 样式隔离 <style scoped>

🎯 运行效果

当你保存这段代码后:

  • 浏览器显示一个按钮

  • 按钮上显示数字 0

  • 每次点击按钮,数字 +1

  • 按钮有内边距、合适字体、鼠标手型效果

相关推荐
计算机魔术师18 小时前
Latent Space 解读 Anthropic 提交 S-1:拟以代码 AN 上市纳斯达克,H1 2026 营收 16.3B 美元
前端
2601_9498477519 小时前
Form-data 跨端三方库仓颉适配全流程
前端·javascript·flutter
zyseo819 小时前
谷歌SEO 内容更新焕新流程:让老页面重新起量
java·前端·javascript
Oiiouui19 小时前
关于 Logto 登录系统的体验以及建议
javascript·安全·react
夜雪一千19 小时前
标题特殊符号数据清洗实战:解决HTML实体、零宽字符、Emoji乱码踩坑
前端·html
richdata19 小时前
从采购承诺到库存周转:降低库存资金占用的六个计划杠杆
大数据·前端·javascript
计算机魔术师20 小时前
别人IPO发股票,Anthropic一口气搞出五类
前端
ai_coder_ai20 小时前
使用Web IDE边写自动化脚本
运维·前端·自动化
贾伟康20 小时前
【共创稿事节】一个 UserDataManager 管八类数据:Preferences 持久化的克制用法
java·服务器·前端·harmonyos·arkts·鸿蒙
卓豪终端管理21 小时前
【无标题】
java·服务器·前端