响应式基础

reactive函数

预计阅读时间1 分 270 views

0 前言

前面我们学会了如果用ref函数实现一个响应式变量,而这一章节我们将会讲解,如何声明一个响应式对象。

1 语法

// 引入reactive
import { reactive } from 'vue';
// 声明响应式对象reactive
const reactiveObject = reactive({ /* 对象属性 */ });

上面通过通过reactive()函数,从而创建了响应式对象。

在了解了它的基本语法后,我们看一下示例。

2 示例

<template>
  <div>
    <p>Count is: {{ myObject.count }}</p>
    <button @click="increment">增加</button>
  </div>
</template>

<script setup>
import { reactive } from 'vue';

// 使用 reactive 创建一个包含响应式数据的对象
const myObject = reactive({
  count: 0
});

// 定义方法
const increment = () => {
  myObject.count++;
};
</script>

我们上面的代码实现了一个计数器的基本功能。myObject 对象包含一个 count 属性,该属性是一个响应式的数据。通过点击按钮,调用 increment 方法,可以增加 count 的值。由于使用了响应式数据,任何对 count 的变化都会自动反映到页面中,所以 <p> 元素中的显示文本会实时更新。

具体页面效果如下:

新增操作

3 reactiv和ref的对比

ref函数既能声明基础数据类型,又能声明对象类型,那我们要reactive有什么用呢?

其实在声明对象的时候使用reactive,能提供更强大的支持。

3.1 实现对象的嵌套

假设有一个嵌套对象,ref 可以包装整个对象,但它不能追踪嵌套属性的变化:

import { ref, reactive } from 'vue';

// 使用ref包装对象
const personRef = ref({
  name: 'John',
  contact: {
    email: 'john@example.com',
    phone: '123-456-7890'
  }
});

// ref只能追踪对象整体的变化
personRef.value.name = 'Jane'; // 视图更新
personRef.value.contact.email = 'jane@example.com'; // 不会触发视图更新

而使用 reactive 则可以完全追踪对象内嵌套属性的变化:

// 使用reactive创建响应式对象
const personReactive = reactive({
  name: 'John',
  contact: {
    email: 'john@example.com',
    phone: '123-456-7890'
  }
});

// reactive可以追踪对象内部嵌套属性的变化
personReactive.name = 'Jane'; // 视图更新
personReactive.contact.email = 'jane@example.com'; // 会触发视图更新

3.2 遍历对象属性更简洁

使用 reactive 创建的对象可以直接进行遍历,而 ref 需要额外的 .value 属性才能访问到实际对象:

const personRef = ref({
  name: 'John',
  age: 30
});

console.log(personRef.value); // 访问整个对象
// 遍历对象属性需要额外的.value
for (const key in personRef.value) {
  console.log(`${key}: ${personRef.value[key]}`);
}

而使用 reactive 则更直接:

const personReactive = reactive({
  name: 'John',
  age: 30
});

console.log(personReactive); // 可直接访问对象
// 直接遍历对象属性
for (const key in personReactive) {
  console.log(`${key}: ${personReactive[key]}`);
}

4 结语

好啦,通过学习reactive,我们学习如何让一个对象变成响应式对象。

这两个响应式函数式vue的重要基础,可要好好掌握。

拿在掌握了这两个基础后,我们就要接触一个更高级牛皮的语法——计算属性,实现对响应式函数的复杂运算。

来,让我们更上一层楼吧!

Leave a Comment

分享此文档

reactive函数

或复制链接

内容