关于 Vue3 响应式 API 以及 reactive 和 ref 的用法

这篇具有很好参考价值的文章主要介绍了关于 Vue3 响应式 API 以及 reactive 和 ref 的用法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


关于 Vue3 响应式 API 以及 reactive 和 ref 的用法,前端,# Vue,前端,Vue3,ref,reactive,响应式,vue.js,typescript,原力计划

📋前言

这篇文章记录一下 Vue3 响应式的内容,其中还包括了 reactiveref 的用法。响应式是一种允许以声明式的方式去适应变化的编程范例,接下来我们一起看看。


🎯关于响应式

Vue 框架的特点之一就是响应式。Vue 2.x 是基于 Object.defineProperty() 方法实现响应式。但是 Object.defineProperty() 方法有一定的局限性,例如 Object.defineProperty() 无法监听对象属性的新增。为了克服解决这种缺陷,Vue3.x 版本引入 Proxy 对象来实现响应式。
关于 Vue3 响应式 API 以及 reactive 和 ref 的用法,前端,# Vue,前端,Vue3,ref,reactive,响应式,vue.js,typescript,原力计划
Proxy 不仅可以监听到属性的变化和删除,同时还支持代理复杂的数据结构,例如 MapSetSymbol 等等。但是 Proxy 也是缺点,就是不兼容 IE 11(实际开发中如果要求程序员兼容 IE ,他可能反手就红温了hhh)。言归正传,如果要考虑兼容 IE 11 的问题,可以使用 Vue 2.x 版本来开发。


🎯reactive 的用法

Vuereactive() 方法通过接收一个对象,返回对象的响应式副本,我们可以看看下面这段代码。

<template>
  <p>
    响应式Count: {{ reactiveCount.count }}
    <button @click="reactiveCount.count++">++</button>
  </p>
</template>

<script setup lang="ts">
import { reactive } from "vue";
interface CountObject {
  count: number;
}

const reactiveCount = reactive<CountObject>({ count: 0 });
</script>

这里通过 reactive() 方法将 { count: 0 }对象封装成一个响应式对象,并且可以通过点击页面中的按钮来动态实现数据更新,运行效果如下图 (项目刚创建的,路有什么的没配置,忽略无关内容)
关于 Vue3 响应式 API 以及 reactive 和 ref 的用法,前端,# Vue,前端,Vue3,ref,reactive,响应式,vue.js,typescript,原力计划
reactive() 方法封装对象成为响应式并不仅仅是一层,而是深层转换。如果想要在 script 模板中修改对象某个属性的值,直接访问进行修改即可。代码如下。

<template>
  <p>学生: {{ student.name }}</p>
  <p>成绩: {{ student.test_socre.name }} | {{ student.test_socre.score }}分</p>
  <button @click="rest">rest mark</button>
</template>

<script setup lang="ts">
import { reactive } from "vue";
interface Student {
  name: string;
  test_socre: {
    name: string;
    score: number;
  };
}

const student = reactive<Student>({
  name: "ghz",
  test_socre: {
    name: "C语言",
    score: 98,
  },
});

const rest = () => {
  student.test_socre.score = 0;
};
</script>

关于 Vue3 响应式 API 以及 reactive 和 ref 的用法,前端,# Vue,前端,Vue3,ref,reactive,响应式,vue.js,typescript,原力计划
点击按钮后,分数重置。
关于 Vue3 响应式 API 以及 reactive 和 ref 的用法,前端,# Vue,前端,Vue3,ref,reactive,响应式,vue.js,typescript,原力计划
这里 reactive() 将一个比较复杂的对象转换成了响应式对象,通过点击按钮,调用 rest 方法,将 student 对象中的 test_score 下的 score 重置为 0 分。同时,在方法内部,可以直接访问对象的属性进行修改数值。


🎯ref 的用法

Vue 3.x 中,ref() 负责将基本数据类型的数据封装成响应式数据。在所使用的 TypeScript 中,基本数据类型有:StringNumberBooleanBigintSymbolUndefinedNull

ref() 负责接受上述类型的数组返回一个响应式而且可变的 ref 对象,如果要获取其中的值,需要访问对象的 .value 属性来获取。我们可以看看下面这段代码。

<template>
  <div></div>
</template>

<script setup lang="ts">
import { ref } from "vue";

const str = ref<string>("hello");
const num = ref<number>(123);
const bool = ref<boolean>(true);
const bigint = ref<bigint>(9007199254740991n);
const symbolObject = Symbol("foo");
const symb = ref<symbol>(symbolObject);
const und = ref<undefined>(undefined);
const nul = ref<null>(null);

console.log(str.value); // hello
console.log(num.value); // 123
console.log(bool.value); // true
console.log(bigint.value); // 9007199254740991nX
console.log(typeof symb.value); // symbol
console.log(symb.value); // Symbol(foo)
console.log(und.value); // undefined
console.log(nul.value); // null
</script>

关于 Vue3 响应式 API 以及 reactive 和 ref 的用法,前端,# Vue,前端,Vue3,ref,reactive,响应式,vue.js,typescript,原力计划
从上面的这段代码中可以看到,如果想要在 script 模板中读取或者修改 ref 对象的值,需要从 .value 属性中获得。在模板中可以直接通过插值表达式读取出来。这里需要注意的是 ref 是响应式对象,所以一旦 ref.value 属性值被修改,那么对应的页面模板也会重新渲染。

reactive() 负责封装对象变量,ref() 负责封装基础数据类型变量,这两个方法是 Vue3 最常见也最重要的命令之一。


📝最后

以上就是这篇文章的全部内容了,通过这篇文章,我们可以简单了解学习 Vue3 响应式的内容,通过实际案例我们也学习了 reactiveref 的用法。
关于 Vue3 响应式 API 以及 reactive 和 ref 的用法,前端,# Vue,前端,Vue3,ref,reactive,响应式,vue.js,typescript,原力计划
文章来源地址https://www.toymoban.com/news/detail-520587.html

到了这里,关于关于 Vue3 响应式 API 以及 reactive 和 ref 的用法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Vue3通透教程【五】Vue3中的响应式数据 reactive函数、ref函数

    专栏介绍: 凉哥作为 Vue 的忠实粉丝输出过大量的 Vue 文章,应粉丝要求开始更新 Vue3 的相关技术文章,Vue 框架目前的地位大家应该都晓得,所谓三大框架使用人数最多,公司选型最多的框架,凉哥之前在文章中也提到过就是 Vue 框架之所以火起来的原因,和 Vue 框架相比其他

    2024年01月24日
    浏览(33)
  • vue3的ref和reactive的用法和解析

       1.前言 2.比较 3.ref源码解析 4.reactive源码解析 createReactiveObject handles的组成 get陷阱 set陷阱 5.总结         vue3新增了ref,reactive两个api用于响应式数据,Ref 系列毫无疑问是使用频率最高的 api 之一,响应式意味着数据变动,页面局部自动更新。数据类型有基本数据类型(

    2024年02月06日
    浏览(28)
  • 详解vue3中ref和reactive用法和区别

    ref 和 reactive 是 Vue3 中用来实现数据响应式的API,一般情况下, ref 定义基本数据类型, reactive 定义引用数据类型。 理解: ref 的参数一般是基本数据类型,也可以是对象类型;如果参数是对象类型,其实底层的本质还是 reactive ,系统就会自动将 ref 转换为 reactive ;我们如果去

    2024年02月11日
    浏览(41)
  • Vue3手写api之reactive、readonly、ref

    Vue 3 中的响应式编程 API 主要包括 reactive 、 readonly 和 ref 。这些 API 允许你创建具有响应式行为的数据对象。下面是手写这些 API 的简单示例: reactive 函数接受一个普通的 JavaScript 对象,并返回一个具有响应式行为的代理对象。 readonly 函数接受一个对象,并返回一个只读的代

    2024年02月12日
    浏览(24)
  • 【Vue学习笔记5】Vue3中的响应式:ref和reactive、watchEffect和watch

    所谓响应式就是界面和数据同步,能实现实时更新。 Vue 中用过三种响应式解决方案,分别是 defineProperty、Proxy 和 value setter。Vue 2 使用的方案是 defineProperty API。Vue3中使用的方案是Proxy和value setter。 vue3中实现响应式数据的方法是使用ref和reactive。 reactive更推荐去定义复杂的数

    2024年02月03日
    浏览(35)
  • vue3:5、组合式API-reactive和ref函数

    目录 0、两者的异同  备注 :vscode通过volar插件自动添加.value 一、reactive() 二、ref()  三、toRefs和toRef    reactive不能处理简单类型的数据 reactive重新分配一个对象会失去响应式。可以使用Object.assign()代替          ref可以支持任何类型的值(基础类型以及对象),但是必须通过

    2024年02月09日
    浏览(24)
  • vue3前端开发,自学一下reactive,ref的差异是什么。

    vue3前端开发,自学,学习一下,reactive和ref的差别。以及基础用法。 前言,这2个东西,都能对外输出动态的数据对象。但是,有点区别,是,reactive只支持输入一个对象作为参数,ref则还可以支持简单的数据信息作为参数。待会有案例代码展示。 下面看看代码内容。第一个

    2024年01月18日
    浏览(38)
  • vue3中ref和reactive联系与区别以及如何选择

    1、ref既可定义基本数据类型,也可以定义引用数据类型,reactive只能定义应用数据类型 2、ref在js中取响应值需要使用 .value,而reactive则直接取用既可 3、ref定义的对象通过.value重新分配新对象时依旧保持数据响应式,而reactive重新分配新对象会失去响应式 4、使用ref定义引用数

    2024年01月25日
    浏览(35)
  • Web前端 ---- 【Vue3】computed计算属性和watch侦听属性(侦听被ref和reactive包裹的数据)

    目录 前言 computed watch watch侦听ref数据 ref简单数据类型 ref复杂数据类型 watch侦听reactive数据 本文介绍在vue3中的computed计算属性和watch侦听属性。介绍watch如何侦听被ref和reactive包裹的数据 在vue3中,计算属性computed也是组合式api,也就是说要先引入,再在setup中使用 语法 完整:

    2024年01月18日
    浏览(45)
  • vue3 #ref #reactive

    一、ref 函数将简单类型的数据包装为响应式数据 import { ref } from \\\'vue\\\'  const count = ref(10) 一、reactive函数将复杂类型的数据包装为响应式数据 import { reactive} from \\\'vue\\\'  const obj= reactive({     name : \\\'zs\\\',     age : 18 })

    2024年02月22日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包