vue3使用ref和reactive

vue3使用ref和reactive的方法

Vue 3引入了两个新的API,ref和reactive,用于创建响应式对象。这两个方法都位于Vue.prototype上,因此可以在组件实例中直接使用。

1.ref

ref函数用于创建一个响应式引用对象。这个函数可以接受一个普通的变量或对象作为参数,并返回一个响应式引用对象。要访问这个引用的值,需要使用.value属性。

例如:

javascript 复制代码
const count = ref(0);
console.log(count.value); // 0
 
count.value++; // 响应式更新
console.log(count.value); // 1
2.reactive

reactive函数用于创建一个响应式对象。这个函数可以接受一个普通的对象作为参数,并返回一个响应式代理对象。这个代理对象会拦截所有的属性访问和修改操作,并自动更新相关的视图。

例如:

javascript 复制代码
const state = reactive({ count: 0 });
console.log(state.count); // 0
 
state.count++; // 响应式更新
console.log(state.count); // 1

在上面的例子中,我们使用reactive函数创建了一个响应式对象,并将其初始值设置为一个包含count属性的对象。然后,我们可以通过直接访问和修改这个对象的属性来触发响应式更新。与ref不同的是,我们不需要使用.value属性来访问和修改这个对象的属性。

Vue 3 使用 ref 和 reactive 创建响应式对象的完整示例:
javascript 复制代码
<template>
<div>
<p>{{ count }}</p>
<button @click="increment">Increment</button>
</div>
</template>
 
<script>
import { ref, reactive } from 'vue';
 
export default {
setup() {
// 使用 ref 创建响应式引用对象
const count = ref(1);
 
// 使用 reactive 创建响应式对象
const state = reactive({
count: 0,
});
 
// 使用 increment 方法修改引用对象的值和响应式对象的属性值
const increment = () => {
count.value++; // 修改引用对象的值
state.count++; // 修改响应式对象的属性值
};
 
return {
count,
state,
increment,
};
},
};
</script>

2.示例说明

在上面的示例中,我们使用 ref 创建了一个名为 count 的响应式引用对象,初始值为 1。我们还使用 reactive 创建了一个名为 state 的响应式对象,其中包含一个名为 count 的属性,初始值为 0。在 increment 方法中,我们通过调用 count.value++ 和 state.count++ 来修改引用对象的值和响应式对象的属性值。由于这些变量都是响应式的,因此当它们的值发生变化时,相关的视图也会自动更新。

Vue 3 使用 ref 和 reactive 创建响应式对象在<script setup>语法格式的完整示例:
1.示例

下面是使用ref和reactive的<script setup>语法格式的示例:

javascript 复制代码
<template>
<div>
<p>{{ message }}</p>
<button @click="changeMessage">Change Message</button>
</div>
</template>
 
<script setup>
import { ref, reactive } from 'vue'
 
const message = ref('Hello, Vue 3!')
const state = reactive({ message: message.value })
 
function changeMessage() {
state.message = 'Changed Message'
}
</script>

2.示例说明

在上面的示例中,我们首先从Vue导入ref和reactive。然后,我们使用ref创建了一个名为message的响应式数据。接下来,我们使用reactive创建了一个名为state的响应式对象,并将message作为其属性。最后,我们定义了一个changeMessage函数,用于改变state.message的值。

在模板中,我们可以通过访问message和state.message来显示响应式数据。点击按钮时,调用changeMessage函数将改变state.message的值,并自动更新视图。

使用<script setup>语法格式,我们可以更简洁地创建组件,并且不需要显式地使用data选项来声明响应式数据。

相关推荐
俊昭喜喜里12 分钟前
理解全局跨域CORS配置
前端
香芋芋圆41 分钟前
iD-editor 详解|OSM官方在线编辑器,基于D3.js的轻量地图编辑器
开发语言·javascript·编辑器
晗夜未央2 小时前
任务队列反复失败,先分清重试、阻塞和结果待核对
开发语言·javascript
锋行天下3 小时前
DeepSeek写Langgraph就是个大傻逼,一本正经胡说八道
前端·人工智能·后端
jktantan3 小时前
每个节点 41 字节:把一棵百万节点树拆进 14 个 typed array
前端·javascript·vue.js·算法·typescript
计算机魔术师4 小时前
Anthropic官方插件被「寄生」,背后是同一类攻击又来了
前端
我命由我123454 小时前
访客系统形式(有用户概念、无用户概念)
java·开发语言·前端·javascript·python·产品运营·产品经理
key_3_feng4 小时前
评估与对齐:Agent 自我进化的护栏
前端·数据库·agent
程序员大阳4 小时前
副队长JavaScript教程(65)-详解JSON:轻量级数据交换格式
javascript·json·序列化·反序列化·stringify·parse
LaughingZhu5 小时前
Product Hunt 热榜 2026-10-30:Empacer、Scape、Floot in ChatGPT
java·前端·数据库·人工智能·chatgpt·notion