iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >VueJs中toRef与toRefs函数怎么使用
  • 810
分享到

VueJs中toRef与toRefs函数怎么使用

2023-07-05 11:07:43 810人浏览 八月长安
摘要

这篇文章主要介绍了Vuejs中toRef与toRefs函数怎么使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇VueJs中toRef与toRefs函数怎么使用文章都会有所收获,下面我们一起来看看吧。正文ref

这篇文章主要介绍了Vuejs中toRef与toRefs函数怎么使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇VueJs中toRef与toRefs函数怎么使用文章都会有所收获,下面我们一起来看看吧。

正文

ref是处理基本数据类型响应式api函数,在setup中声明定义的变量,可以直接在模板中使用

没有被响应式API包裹处理的变量数据,是不具备响应式能力的

也就是往往在逻辑中修改了数据,但是页面不会更新,那怎么样将一个非响应式数据变成响应式数据

就需要用到toRef()toRefs()这两个componsition API

单纯的去看概念,往往比较抽象,是难以理解的,还是需要从具体的实例出发

toRef()函数

作用:创建一个ref对象,其value值指向另一个对象中的某个属性值,与原对象是存在关联关系的

也就是基于响应式对象上的一个属性,创建一个对应的ref,这样创建的ref与它的源属性是保持同步的,与源对象存在引用关系

改变源属性的值将更新ref的值

语法: const 变量名 = toRef(源对象,源对象下的某个属性)

如:const name = toRef(person,'name')

应用: 要将响应式对象中的某个属性单独提供给外部使用时,不想丢失响应式,把一个propref传递给一个组合式函数也会很有用

缺点toRef()只能处理一个属性,但是toRefs(源对象),却可以一次性批量处理

<script setup>import { Reactive } from "vue";const person = reactive({   name:"川川",   age: 18,   job: {     WEB: '前端开发',     trade: '互联网'   } });</script>

那在模板当中想要渲染数据可以这么写

{{person.name}} -{{person.age}}-{{person.job.web}}-{{person.job.trade}}

如果不想在模板当中,写那么长,那么可以先解构,如下所示

<script setup>import { reactive } from "vue";const person = reactive({   name:"川川",   age: 18,   job: {     web: '前端开发',     trade: '互联网'   } });const { name, age} = person;const { web,trade} = person.job;</script>

那在模板中,可以直接使用变量的,如下所示

{{name}}-{{age}}-{{web}}-{{trade}}

现在,如果我们想要去修改变量数据,会发现,逻辑中的数据会被修改,但是页面中的数据不会更新,也就是丢失了响应式 比如:如下模板,分别修改名字,年龄属性

<button @click="handleChangeAttrs">修改属性</button>

那在逻辑代码中

<script setup>import { reactive } from "vue";const person = reactive({   name:"川川",   age: 18,   job: {     web: '前端开发',     trade: '互联网'   } });const { name, age} = person;const { web,trade} = person.job;// 这样直接操作数据是无法修改的,因为它不是一个响应式数据,只是一个纯字符串,不具备响应式function handleChangeAttrs() {    name = "itclanCoder";    age = 20;}</script>

如果想要修改数据,支持响应式,将一个非响应式数据,变成一个响应式数据,需要借用toRef(源对象,源对象下指定的属性)函数,如下所示

<script setup>import { reactive,toRef } from "vue";const person = reactive({   name:"川川",   age: 18,   job: {     web: '前端开发',     trade: '互联网'   } });// 想要修改指定哪个对象具备响应式,那么就使用toRef函数处理,toRef(源对象,源对象下的某个属性)const name = toRef(person,'name');  const age = toRef(person,'age');// 经过了toRef的处理,修改变量的值,那么就需要xx.valuefunction handleChangeAttrs() {    name.value = "itclanCoder";    age.value = 20;}</script>

在模板当中,仍然是如上所示

{{person}}{{name}}-{{age}}-{{web}}-{{trade}}<button @click="handleChangeAttrs">修改属性</button>

你会发现使用toRef()函数处理后,非响应式数据就具备响应式数据的能力了的,而且源数据也会同步

如果只是用于纯数据页面的展示,那是没有必要将数据转化为响应式数据的,如果需要修改数据,那么就需要将非响应式数据转化为响应式数据

是通过toRef()函数实现的

与ref的不同

如果你用ref处理数据的话,如下所示,使用ref处理数据,页面也能实现数据的响应式,更新,但是它与toRef是不同,有区别的

<script setup>import { reactive,toRef } from "vue";const person = reactive({   name:"川川",   age: 18,   job: {     web: '前端开发',     trade: '互联网'   } });// 使用refconst name = ref(person.name);  const age = toRef(person.age);// 经过了toRef的处理,修改变量的值,那么就需要xx.valuefunction handleChangeAttrs() {    name.value = "itclanCoder";    age.value = 20;}</script>

修改数据,页面数据会更新,但是源数据不会同步,修改,并无引用关系,ref相当于是对源对象重新拷贝一份数据 ref()接收到的是一个纯数值

toRefs()函数

toRef()只能处理源对象指定的某个属性,如果源对象属性很多,一个一个的使用toRef()处理会显得比较麻烦

那么这个toRefs()就很有用了,它与toRef()的功能一致,可以批量创建多个ref对象,并且能与源对象保持同步,有引用关系

语法:toRefs(源对象),toRefs(person)

如上面的示例代码,修改为toRefs()所示

<script setup>import { reactive,toRefs } from "vue";const person = reactive({   name:"川川",   age: 18,   job: {     web: '前端开发',     trade: '互联网'   } });// 通过toRefs()批量处理,此时通过解构const {name,age} = toRefs(person);  // 经过了toRef的处理,修改变量的值,那么就需要xx.valuefunction handleChangeAttrs() {    name.value = "itclanCoder";    age.value = 20;}</script>

当从组合式函数中返回响应式对象时,toRefs 是很有用的。使用它,消费者组件可以解构/展开返回的对象而不会失去响应性

import { toRefs } from "vue";function useFeatureX() {  const state = reactive({    foo: 1,    bar: 2  })  // 在返回时都转为ref  return toRefs(state)}// 可以解构而不会失去响应性const { foo, bar } = useFeatureX()

注意事项

toRefs 在调用时只会为源对象上可以枚举的属性创建 ref。如果要为可能还不存在的属性创建 ref,则改用 toRef

为啥需要toRef()与toRefs()函数

目的:在保证不丢失响应式的前提下,把对象进行解构,方便对象数据分解和扩散

前提:针对的是响应式对象(reactive封装的)非普通对象

注意:不创造响应式(那是reactive的事情),它本身只是延续响应式,让一个非响应式数据通过toReftoRefs转换为响应式数据能力

关于“VueJs中toRef与toRefs函数怎么使用”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“VueJs中toRef与toRefs函数怎么使用”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注编程网精选频道。

--结束END--

本文标题: VueJs中toRef与toRefs函数怎么使用

本文链接: https://www.lsjlt.com/news/351646.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • VueJs中toRef与toRefs函数怎么使用
    这篇文章主要介绍了VueJs中toRef与toRefs函数怎么使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇VueJs中toRef与toRefs函数怎么使用文章都会有所收获,下面我们一起来看看吧。正文ref...
    99+
    2023-07-05
  • VueJs中toRef与toRefs函数对比详解
    目录正文toRef()函数与ref的不同toRefs()函数为啥需要toRef()与toRefs()函数总结正文 ref是处理基本数据类型响应式API函数,在setup中声明定义的...
    99+
    2023-03-15
    VueJs toRef与toRefs函数对比 VueJs toRef toRefs
  • Vue3中toRef和toRefs函数怎么使用
    好,接下来我们使用 toRef 函数写一个案例,还是和以前一样,页面展示一个用户的名称和年纪。<template> <div> <h2>toRef toRefs 函数</h2> ...
    99+
    2023-05-16
    Vue3 toref torefs
  • Vue中的ref、toRef与toRefs怎么使用
    这篇文章主要介绍了Vue中的ref、toRef与toRefs怎么使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Vue中的ref、toRef与toRefs怎么使用文章都会有所收获,下面我们一起来看看吧。一、r...
    99+
    2023-07-05
  • Vue3中toRef和toRefs函数如何使用
    这篇文章主要介绍了Vue3中toRef和toRefs函数如何使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Vue3中toRef和toRefs函数如何使用文章都会有所收获,下面我们一起来看看吧。toRef 函...
    99+
    2023-07-06
  • vue3 中的toRef函数和toRefs函数的基本使用
    目录这篇我们看下toRef和toRefs的基本使用Vue3的toRef这篇我们看下toRef和toRefs的基本使用 我们知道ref可以用于创建一个响应式数据,而toRef也可以创建...
    99+
    2022-11-16
    vue3 toRef和toRefs函数 vue3 toRef函数和toRefs函数 vue3 toRef函数
  • vue3中的ref、toRef、toRefs怎么使用
    这篇文章主要讲解了“vue3中的ref、toRef、toRefs怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“vue3中的ref、toRef、toRefs怎么使用”吧!一、refre...
    99+
    2023-07-06
  • Vue3中的toRef和toRefs怎么使用
    今天小编给大家分享一下Vue3中的toRef和toRefs怎么使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。toRef ...
    99+
    2023-07-05
  • Vue的toRef、toRefs和toRaw函数如何使用
    今天小编给大家分享一下Vue的toRef、toRefs和toRaw函数如何使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。...
    99+
    2023-07-05
  • 一文搞懂Vue3中toRef和toRefs函数的使用
    目录toRef 函数toRef 函数使用ref 函数验证toRefs 函数toRefs 函数使用总结上一篇博文介绍了 vue3 里面的 ref 函数和 reactive 函数,实现响...
    99+
    2024-04-02
  • Vue3中toRef与toRefs的区别是什么
    这篇文章主要讲解了“Vue3中toRef与toRefs的区别是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Vue3中toRef与toRefs的区别是什么”吧!作用:创建一个ref对象,...
    99+
    2023-06-29
  • VueJs中customRef函数怎么使用
    这篇文章主要介绍了VueJs中customRef函数怎么使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇VueJs中customRef函数怎么使用文章都会有所收获,下面我们一起来看看吧。前言ref是Vue官方...
    99+
    2023-07-05
  • vue3中的ref,toRef,toRefs三个的作用使用小结
    目录1. ref的使用2. toRef的使用3. toRefs的使用4.总结1. ref的使用      ref 接受一个原始值,返回一个具有响应式的对...
    99+
    2022-11-16
    vue3 ref toRef toRefs vue3 ref toRef toRefs区别
  • VueJs中的shallowRef与shallowReactive函数使用比较
    目录前言shallowRefshallowReactive总结前言 在vue3当中一些相似的组合式API,如果没有经常使用,就会混淆,对于初学者,很是迷惑,比如:shallowRe...
    99+
    2023-05-14
    VueJs中的shallowRef与shallowReactive Vue shallowRef shallowReactive
  • vueJs函数readonly与shallowReadonly使用对比详解
    目录前言readonlyshallowreadonly总结前言 在使用vue3开发项目时,对于一些特殊的需求,针对有些数据字段,在前端,只允许读取,不允许修改,比如:有的网站用户名...
    99+
    2023-05-14
    vue readonly shallowReadonly vue 函数对比
  • 一文搞懂VueJs中customRef函数使用
    目录前言示例-延迟显示总结前言 ref是Vue官方提供的componsition API,将一个非响应式数据转变为响应式数据的函数,至于底层怎么实现数据的收集与响应式 使用者无需去...
    99+
    2023-05-14
    VueJs customRef函数使用 VueJs customRef
  •  js中toString()函数与valueOf()函数怎么使用
    本篇内容介绍了“ js中toString()函数与valueOf()函数怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!&n...
    99+
    2023-06-30
  • vueJs函数toRaw markRaw使用对比详解
    目录前言toRaw()函数markRaw()函数总结前言 针对一些特殊的需求,在项目里,需要将响应式数据变为普通原始类型数据,这种情况是有的 在Vue里,能够将普通数据类型的数据变...
    99+
    2023-05-13
    vueJs函数toRaw markRaw vueJs toRaw markRaw
  • sendmail函数与mail函数怎么在Linux中使用
    sendmail函数与mail函数怎么在Linux中使用?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。环境  本机安装sendmail了, 但是没有启动。 其他机器上有ma...
    99+
    2023-06-13
  • greatest函数与least函数怎么在oracle中使用
    这篇文章给大家介绍greatest函数与least函数怎么在oracle中使用,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。greatest (max(one),max(two),ma...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作