Vue3 Reactive和Ref

当你在使用Vue 3时,reactiveref 是两个常用的响应式API。它们都是用来跟踪状态变化并在UI中进行响应式更新的。

1. ref

ref 用于创建一个响应式的基本数据类型变量,例如数字、字符串等。它返回一个带有 .value 属性的对象,该属性包含了被包装的值。

javascript 复制代码
import { ref } from 'vue';

// 创建一个ref
const count = ref(0);

// 在模板中使用
<template>
  <div>{{ count.value }}</div>
  <button @click="increment">Increment</button>
</template>

// 在逻辑中使用
<script>
import { ref } from 'vue';

export default {
  setup() {
    // 创建一个ref
    const count = ref(0);

    // 定义一个函数来更新count
    const increment = () => {
      count.value++;
    };

    // 将数据和方法暴露给模板
    return {
      count,
      increment,
    };
  },
};
</script>

2. reactive

reactive 用于创建一个响应式的对象,可以跟踪对象内部属性的变化。它返回一个代理对象,你可以像操作普通对象一样操作它,但所有的改动都将被监视。

javascript 复制代码
import { reactive } from 'vue';

// 创建一个reactive对象
const state = reactive({
  count: 0,
  message: 'Hello',
});

// 在模板中使用
<template>
  <div>{{ state.count }}</div>
  <div>{{ state.message }}</div>
  <button @click="increment">Increment</button>
  <input v-model="state.message" />
</template>

// 在逻辑中使用
<script>
import { reactive } from 'vue';

export default {
  setup() {
    // 创建一个reactive对象
    const state = reactive({
      count: 0,
      message: 'Hello',
    });

    // 定义一个函数来更新count
    const increment = () => {
      state.count++;
    };

    // 将数据和方法暴露给模板
    return {
      state,
      increment,
    };
  },
};
</script>

无论是使用 ref 还是 reactive,都可以实现响应式数据的跟踪和更新,具体选择取决于你的需求。

相关推荐
invicinble15 分钟前
【无标题】
前端
EasyGBS19 分钟前
从接入到稳定播放:无插件直播H5视频流媒体播放器EasyPlayer.js如何撑起Web端流媒体
开发语言·前端·javascript
不可能片场21 分钟前
nohup 之后进程还是死了:GUI 子进程的存活陷阱
前端·electron
Carl_奕然25 分钟前
【智能体】Agent的四种设计模式之:React(2026最新版)
javascript·人工智能·python·react.js·设计模式·语言模型
名为沙丁鱼的猫72927 分钟前
React/JSX 编码规范
前端·javascript·react.js
是吕先森30 分钟前
【python】selenium实现web自动化测试
前端·python·selenium
Highcharts.js37 分钟前
甘特图纵向任务、横向时间显示图表可视化开发|Highcharts甘特图示例
开发语言·前端·javascript·可视化·甘特图·数据可视化·highcharts
yume_sibai1 小时前
Element Plus 导航与反馈组件完全指南(15个核心组件)
前端·elementui·交互
烬羽1 小时前
给 Agent 一个检索式记忆:把对话历史存进 Milvus,该记的都记得
javascript·数据库·agent
磐链科技1 小时前
区块链开发入门实战:用 Hardhat 与 Ethers.js 搭建你的第一个 DApp
开发语言·javascript·区块链