返回顶部
首页 > 资讯 > 精选 >setup+ref+reactive如何实现vue3响应式功能
  • 354
分享到

setup+ref+reactive如何实现vue3响应式功能

2023-06-21 20:06:22 354人浏览 八月长安
摘要

这篇文章给大家介绍setup+ref+Reactive如何实现vue3响应式功能,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。setup 是用来写组合式 api ,内部的数据和方法需要通过 return 之后,模板才能

这篇文章给大家介绍setup+ref+Reactive如何实现vue3响应式功能,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

setup 是用来写组合式 api ,内部的数据和方法需要通过 return 之后,模板才能使用。在之前 Vue2 中,data 返回的数据,可以直接进行双向绑定使用,如果我们把 setup 中数据类型直接双向绑定,发现变量并不能实时响应。接下来就看看setup如何实现data的响应式功能?

一、ref

setup 内的自定义属性不具备响应式能力,所以引入了 ref ,ref 底层通过代理,把属性包装值包装成一个 proxy ,proxy 内部是一个对象,使得基础类型的数据具备响应式能力,使用之前必须引入。

示例1:ref 使用

<template> <div>  <input type="text" v-model="mood">  {{mood}} </div></template><script>import { ref } from "vue"export default{ setup(){  let mood = ref("此时心情好差呀!")  setTimeout(()=>{   mood.value = "心情要变的像人一样美"  },3000)  return{   mood  } }}</script>

此时可以在 setup 模板内任意编辑 mood,可以保证实时响应。实例在修改 mood 的值加了 value ,是因为 ref 的工作原来:

let mood = ref("此时心情好差呀!")

修改成:let mood = proxy({value:"此时心情好差呀!"})

二、reactive

上述的 ref 让基础数据类型具备了响应式,但是如果我们换成引用类型的数据,就会失效。所以引入了 reactive。

reactive 通过底层包装,将引用类型数据包装到 proxy 内,使用原理如:

let me = reactive({ single:true, want:"暖的像火炉的暖男"})// 运行结果为let me = proxy : { single: true, want:"暖的像火炉的暖男" }

引用的时候,直接使用 me.want 就可以了。

示例2:reactive 使用

<template> <div>  {{me.want}} </div></template><script>import { ref , reactive } from "vue"export default{ setup(){  let me = reactive({   single:true,   want:"暖的像火炉的暖男"  })  setTimeout(()=>{   me.want = "夏天容易化了"  },3000)  return{   me  } }}</script>

通过 setup + ref + reactive 就可以完全实现 vue2 中 data 的响应式功能,所以 setup 完全可以替换掉 data。

三、toRefs 、toRef 应用

setup + ref + reactive 实现了数据响应式,不能使用 es6 解构,会消除响应特性。所以需要 toRefs 解构,使用时,需要先引入。

它的工作原理为:

import { ref , reactive, toRefs } from "vue"let me = reactive({ single:true, want:"暖的像火炉的暖男"})//运行为let me = proxy : { single: true, want:"暖的像火炉的暖男" }const { single, want } = toRefs( me )// 运行为single : proxy({ value:true })want : proxy({ value:"暖的像火炉的暖男" })

toRefs 把 single 和 want 解构成两个 proxy ,所以是响应式的。

示例3:toRefs 解构数据

<template> <div>  {{want}}  <input type="text" v-model="want"> </div></template><script>import { ref , reactive, toRefs } from "vue"export default{ setup(){  let me = reactive({   single:true,   want:"暖的像火炉的暖男"  })  setTimeout(()=>{   me.want = "夏天容易化了"  },3000)  // 解构  const {single,want} = toRefs(me)   return{    single,    want   }  }}</script>

toRef作用:将对象某一个属性,作为引用返回。比较难理解,可以打印查看下结果更容易理解。

let me = reactive({ single:true, want:"暖的像火炉的暖男"})let lv = toRef( me, 'love' )console.log('love',love);//打印结果ObjectRefImpl { __v_isRef: true _key: "love" _object: Proxy {single: true, want: "暖的像火炉的暖男"} value: undefined [[Prototype]]: Object}

toRef 是组件之间进行传值值,对可选参数进行处理,运行时,先查看 me中是否存在 love ,如果存在时就继承 me 中的 love ,如果不存在时就创建一个 love ,然后解构赋值给变量 lv。

示例4:toRef 使用

<template> <div>  {{want}} <input type="text" v-model="want"></div></template><script>import { ref , reactive, toRefs, toRef } from "vue"export default{ setup(){  let me = reactive({   single:true,   want:"暖的像火炉的暖男"  }) setTimeout(()=>{  me.want = "夏天容易化了" },3000) const {single,want } = toRefs(me) const love = toRef(me,'love') console.log('love',love); return{  single,  want  } }}</script>

ref 让基础数据类型具备响应式,而 reactive 让引用类型的数据具备响应式。setup + ref + reactive 完全实现 vue2 中 data 响应式功能。

toRefs 解构 reactive 包装的数据,toRef 用于对可选参数。

关于setup+ref+reactive如何实现vue3响应式功能就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

--结束END--

本文标题: setup+ref+reactive如何实现vue3响应式功能

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

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

猜你喜欢
  • setup+ref+reactive实现vue3响应式功能
    setup 是用来写组合式 api ,内部的数据和方法需要通过 return 之后,模板才能使用。在之前 vue2 中,data 返回的数据,可以直接进行双向绑定使用,如果我们把 s...
    99+
    2024-04-02
  • setup+ref+reactive如何实现vue3响应式功能
    这篇文章给大家介绍setup+ref+reactive如何实现vue3响应式功能,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。setup 是用来写组合式 api ,内部的数据和方法需要通过 return 之后,模板才能...
    99+
    2023-06-21
  • 如何在vue3中使用setup、 ref、reactive
    1.初识setUp的使用简单介绍下面的代码功能:使用ref函数,去使用监听某一个变量的变化,并且把它渲染到视图上。setUp函数是组合API的入口函数。这个是非常重要的。setUp可以去监听变量的变化哈!我们将会利用它ref 在vue中内置...
    99+
    2023-05-14
    Vue3 reactive setup
  • vue3中如何使用setup、 ref和reactive
    1.初识setUp的使用简单介绍下面的代码功能:使用ref函数,去使用监听某一个变量的变化,并且把它渲染到视图上。setUp函数是组合API的入口函数。这个是非常重要的。setUp可以去监听变量的变化哈!我们将会利用它ref 在vue中内置...
    99+
    2023-05-16
    Vue3 reactive setup
  • Vue3响应式的ref与reactive怎么使用
    这篇文章主要讲解了“Vue3响应式的ref与reactive怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Vue3响应式的ref与reactive怎么使用”吧!ref:定义基本数据类...
    99+
    2023-07-04
  • Vue3中的ref和reactive响应式原理解析
    目录1 ref2 isref判断是不是一个ref对象3 shallowref创建一个跟踪自身.value变化的 ref,但不会使其值也变成响应式的4 triggerRef5 cust...
    99+
    2022-11-13
    Vue3 ref和reactive响应式 Vue3 ref和reactive
  • Vue3响应式方案及ref reactive的区别详解
    目录一、前言二、新的方案1. 缘由2. Proxy 和 Reflect1) Proxy2) Reflect3. reactive1) createReactiveObject() 函...
    99+
    2022-12-19
    vue3响应式布局 vue3 ref和reactive区别 vue3中ref和reactive
  • Vue3响应式对象Reactive和Ref的用法解读
    目录一、内容简介二、Reactive1. 关键源码2. 源码流程分析三、代理拦截操作1. 数组操作2.Get操作3. Set操作4. 其余行为拦截操作四、Ref对象1. 思考一个问题...
    99+
    2024-04-02
  • Vue3关于响应式数据类型详解(ref、reactive、toRef、及toRefs)
    目录refreactivetoRef()toRefs()ref 接受一个内部值,返回一个响应式的、可更改的 ref 对象,此对象只有一个指向其内部值的 property .value...
    99+
    2023-01-29
    Vue3响应式数据类型 Vue3 ref reactive toRef toRefs
  • vue3怎么使用ref和reactive定义和修改响应式数据
    这篇文章主要介绍“vue3怎么使用ref和reactive定义和修改响应式数据”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“vue3怎么使用ref和reactive定义和修改响应式数据”文章能帮助大...
    99+
    2023-07-04
  • vue3+ts数组去重方及reactive/ref响应式显示流程分析
    目录vue3+ts数组去重方法-reactive/ref响应式显示简单数组使用 Set 和 扩展运算符(…)将集合转换回数组使用 Set 和 Array.from() ...
    99+
    2023-05-18
    vue3  reactive/ref响应式 vue3 ts数组去重
  • Vue3 ref构建响应式变量失效如何解决
    const title = ref("Hello, Vue 3!");ref 接收参数并将其包裹在一个带有 value 属性的对象中返回,然后可以使用该属性访问或更改响应式变量的值,比如上面的代码我们使用 count.v...
    99+
    2023-05-14
    Vue3 ref
  • Vue3响应式系统如何实现computed
    这篇“Vue3响应式系统如何实现computed”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Vue3响应式系统如何实现co...
    99+
    2023-07-06
  • Vue3响应式对象是如何实现的(2)
    目录前言分支切换的优化副作用函数嵌套产生的BUG自增/自减操作产生的BUG前言 在Vue3响应式对象是如何实现的(1)中,我们已经从功能上实现了一个响应式对象。如果仅仅满足于功能实现...
    99+
    2024-04-02
  • Vue3响应式对象是如何实现的(1)
    目录简单的响应式实现Proxy与响应式为什么需要Proxy?Proxy创建的代理对象与原始对象有何不同?多副作用函数的响应式实现简单的响应式实现 为了方便说明,先来看一个简单的例子。...
    99+
    2024-04-02
  • Vue3 响应式系统实现 computed
    目录前言实现 computed总结前言 上篇文章我们实现了基本的响应式系统,这篇文章继续实现 computed。 首先,我们简单回顾一下: 响应式系统的核心就是一个 WeakMap ...
    99+
    2024-04-02
  • 二维码在Python中的应用,如何实现响应式功能?
    二维码是一种可以用来存储数字、文字、链接等信息的图形化编码方式。它已经被广泛应用于各种领域,例如商品标签、文化遗产保护、个人名片等。在Python中,我们可以使用第三方库qrcode来生成二维码,并实现响应式功能。 安装qrcode库 ...
    99+
    2023-08-13
    二维码 响应 打包
  • 详解vue3 响应式的实现原理
    目录核心设计思想Vue.js 2.x 响应式Vue.js 3.x 响应式依赖收集:get 函数派发通知:set 函数总结源码参考核心设计思想 除了组件化,Vue.js 另一个核心设计...
    99+
    2024-04-02
  • Vue3的响应式机制怎么实现
    这篇文章主要介绍了Vue3的响应式机制怎么实现的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Vue3的响应式机制怎么实现文章都会有所收获,下面我们一起来看看吧。一、什么是响应式?在javascript中的变量是...
    99+
    2023-07-04
  • Vue3响应式系统怎么实现computed
    首先,我们简单回顾一下:响应式系统的核心就是一个 WeakMap --- Map --- Set 的数据结构。WeakMap 的 key 是原对象,value 是响应式的 Map。这样当对象销毁的时候,对应的 Map 也会销毁。Map 的 ...
    99+
    2023-05-15
    Vue3 computed
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作