最简单但完整的 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 的事件监听

    • @clickv-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

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

相关推荐
万少35 分钟前
用腻了 WorkBuddy 的默认界面?这个开源小工具给它换上了毛玻璃
前端·javascript·后端
To_OC2 小时前
LC 15 三数之和:双指针不难,难的是把去重做对
javascript·算法·leetcode
触底反弹3 小时前
🔥 前端也能玩转 AI 流式输出!从二进制流到打字机效果,一篇讲透
javascript·人工智能·node.js
胡萝卜术3 小时前
深度重构:Agent Skills——从 Prompt 工程到能力工程
javascript·架构·github
海上彼尚4 小时前
Nodejs也能写Agent - 16.LangGraph篇 - 条件分支与循环
前端·后端·langchain·node.js
To_OC5 小时前
从 “卡死半天” 到 “打字机效果”:大模型流式输出前端实现全记录
前端·javascript·llm
rockey6275 小时前
基于AScript的JavaScript脚本语言发布啦
javascript·c#·.net·js·script
SoaringHeart6 小时前
Flutter最佳实践:键盘辅助视图输入框天添加图片附件
前端·flutter
kyriewen6 小时前
我看完这篇安全论文——AI推荐的npm包,92%是编出来的
前端·javascript·ai编程
心中有国也有家7 小时前
AtomGit Flutter 鸿蒙客户端:Canvas 绘制进阶-路径、渐变与混合模式
android·javascript·flutter·华为·harmonyos