返回顶部
首页 > 资讯 > 精选 >Vue3中ref与reactive的介绍和拓展
  • 460
分享到

Vue3中ref与reactive的介绍和拓展

2023-06-20 12:06:17 460人浏览 泡泡鱼
摘要

本篇内容主要讲解“vue3中ref与Reactive的介绍和拓展”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Vue3中ref与reactive的介绍和拓展”吧!一、ref和reactive死死

本篇内容主要讲解“vue3中ref与Reactive的介绍和拓展”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习Vue3中ref与reactive的介绍和拓展”吧!

一、ref和reactive

死死记住:ref本质也是reactive,ref(obj)等价于reactive({value: obj})

  • vue3中实现响应式数据的方法是就是使用ref和reactive,所谓响应式就是界面和数据同步,能实现实时更新

  • vue2中响应式是通过defineProperty实现的,vue3中是通过es6的Proxy来实现的

Vue3中ref与reactive的介绍和拓展

1.reactive

  • reactive的参数必须是一个对象,包括JSON数据和数组都可以,否则不具有响应式

  • 如果给reactive传递了其他对象(如时间对象),默认情况下修改对象界面不会自动更新,如果想更新,可以通过给对象重新赋值来解决

2.ref

既然有了reactive,为何还要ref呢?当我们只想让某个变量实现响应式的时候,采用reactive就会比较麻烦,因此vue3提供了ref方法进行简单值的监听,但并不是说ref只能传入简单值,他的底层是reactive,所以reactive有的,他都有。还是那句老话:

死死记住:ref本质也是reactive,ref(obj)等价于reactive({value: obj})

  • 在vue中使用ref的值,不用通过.value获取

  • js中使用ref的值,必须通过.value获取

二、shallowRef和shallowReactive

递归监听和非递归监听
ref和reactive都属于递归监听,也就是数据的每一层都是响应式的,如果数据量比较大,非常消耗性能,非递归监听只会监听数据的第一层。

1. ref和shallowRef

  • ref定义的数据每一层都是响应式数据

  • shallowRef定义的数据,只有第一层是响应式的,即只有在更改.value的时候才能实现响应式

let age = ref({      a: '1',      f: {        b: '2',        s:{          c: '3'        }      }    })//打印各层数据console.log(age);console.log(age.value);console.log(age.value.f);console.log(age.value.f.s);

Vue3中ref与reactive的介绍和拓展

let age = shallowRef({      a: '1',      f: {        b: '2',        s:{          c: '3'        }      }    })//打印各层数据console.log(age);console.log(age.value);console.log(age.value.f);console.log(age.value.f.s);

Vue3中ref与reactive的介绍和拓展

使用shallowRef后,可以通过triggerRef()方法主动更新界面,实现界面刷新

function doSome(){  age.value.f.s.c = 'c';  //主动更新界面  triggerRef(age);}

2. reactive和shallowReactive

Vue3中ref与reactive的介绍和拓展

注意:shallowReactive没有类似triggerRef()的方法

三、toRaw

toRaw的出现是解决什么问题呢?

有些时候我们不希望数据进行响应式实时更新,可以通过toRaw获取ref或reactive引用的原始数据,通过修改原始数据,不会造成界面的更新,只有通过修改ref和reactive包装后的数据时才会发生界面响应式变化。

let obj1 = {...};//state和obj1是引用关系,state的本质是一个Proxy对象,其中引用了obj1let state = reactive(obj1);//通过toRaw方法获取到原始数据,其实是获取到obj1的内存地址,obj2和obj1是完全相等的let obj2 = toRaw(state)console.log(obj1 === obj2);//true

有些同学会问,那直接使用obj1来修改数据不就行了吗?可关键是我们在使用reactive定义数据时一般不会先定义一个obj,再将他传给reactive,都是直接在reactive中写数据的。

四、markRaw

与toRaw不同,markRaw包装后的数据永远不会被追踪!

暂时没发现有什么用处(手动狗头)

let obj1 = {name: "lijing", age: 18}let obj2 = markRaw(obj1);//此时reactive包装的数据虽然是响应式对象,但是不会被跟踪,也不会产生效应式效果let state1 = reactive(obj2)console.log(obj1 === obj2);//true

五、toRef和toRefs

ref和toRef都是用来构造响应式数据,两者有什么区别呢,看两个例子

1. ref

复制,修改响应式数据不会影响以前的数据,数据发生改变界面就会自动更新

转换后的是一个RefImpl类型

Vue3中ref与reactive的介绍和拓展

可以看到,使用ref对一个对象的某个简单数据类型属性进行响应式改造后,通过修改响应式数据不会影响到原始数据,如上图中,通过state1修改值后,obj1中的a属性值没有发生变化。这里有个注意点:修改的这个属性必须是简单数据类型,一个具体的值,不能是引用,如果该属性也是一个对象,则会影响,因为对象--->引用!

例如上面例子中,如果传入state1的是obj1.f,则情况完全不同

//等价于let state1 = ref({b: '2',s: {c: '3'}})// 又等价于--->let state1 = reactive({value: {....}}})let state1 = ref(obj1.f);

2.  toRef

如果使用toRef来转换,则修改响应式数据会影响到原始数据,数据发生改变,但是界面不会自动更新

转换后的是一个ObjectRefImpl类型

Vue3中ref与reactive的介绍和拓展

ref类似深拷贝,toref类似浅拷贝

3.  toRefs

遍历对象中的所有属性,将其变为响应式数据,这是因为toRef只能传一个key,toRefs所达到的效果与toRef一样

Vue3中ref与reactive的介绍和拓展

tips:目前用的最多的还是ref和reactive,其他东西一般是后期用来改善性能使用的。

到此,相信大家对“Vue3中ref与reactive的介绍和拓展”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

--结束END--

本文标题: Vue3中ref与reactive的介绍和拓展

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

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

猜你喜欢
  • Vue3中ref与reactive的介绍和拓展
    本篇内容主要讲解“Vue3中ref与reactive的介绍和拓展”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Vue3中ref与reactive的介绍和拓展”吧!一、ref和reactive死死...
    99+
    2023-06-20
  • Vue3中ref与reactive的详解与扩展
    目录一、ref和reactive1.reactive2.ref 二、shallowRef和shallowReactive1. ref和shallowRef2. reactive和sh...
    99+
    2024-04-02
  • vue3中的ref与reactive如何使用
    本文小编为大家详细介绍“vue3中的ref与reactive如何使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“vue3中的ref与reactive如何使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。一、r...
    99+
    2023-07-06
  • 简单谈谈Vue3中的ref和reactive
    目录一、是什么?二、先聊reactive三、再聊ref四、ref和reactive定义数组对比五、对比总结总结一、是什么? ref和reactive是Vue3中用来实现数据响应式的A...
    99+
    2023-05-16
    vue3中ref和reactive区别 vue3 ref和reactive vue3 ref和reactive区别
  • Vue3中关于ref和reactive的问题
    目录关于ref和reactive的问题简单了解 ref & reactivevue3 ref 和reactive的区别总结关于ref和reactive的问题 如果你使用过 V...
    99+
    2023-05-16
    Vue3中ref Vue3中reactive 关于ref和reactive
  • vue3 中ref和reactive的区别讲解
    1. ref和reactive区别:    如果在template里使用的是ref类型的数据, 那么Vue会自动帮我们添加.value    ...
    99+
    2022-12-19
    vue3 ref和reactive的区别 vue3 ref和reactive vue  ref和reactive的区别
  • Vue3中的ref和reactive怎么使用
    今天小编给大家分享一下Vue3中的ref和reactive怎么使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、是什么r...
    99+
    2023-07-06
  • Vue3中的ref和reactive如何使用
    这篇文章主要讲解了“Vue3中的ref和reactive如何使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Vue3中的ref和reactive如何使用”吧!一、是什么ref和reacti...
    99+
    2023-07-06
  • vue3中ref和reactive怎么使用
    这篇“vue3中ref和reactive怎么使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“vue3中ref和reacti...
    99+
    2023-07-05
  • vue3中如何使用ref和reactive
    这篇文章主要介绍“vue3中如何使用ref和reactive”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“vue3中如何使用ref和reactive”文章能帮助大家解决问题。1.前言vue3新增了r...
    99+
    2023-07-06
  • vue3中如何使用setup、 ref和reactive
    1.初识setUp的使用简单介绍下面的代码功能:使用ref函数,去使用监听某一个变量的变化,并且把它渲染到视图上。setUp函数是组合API的入口函数。这个是非常重要的。setUp可以去监听变量的变化哈!我们将会利用它ref 在vue中内置...
    99+
    2023-05-16
    Vue3 reactive setup
  • vue3中的ref与reactive使用方法对比
    目录一、ref二、reactive三、ref和reactive的使用对比1.ref的使用方法2. reactive的使用方法四、总结Vue3 与之前的版本相比有很多改进,其中最重要的...
    99+
    2023-05-16
    vue3中的ref与reactive vue3 ref reactive使用
  • Vue3中reactive与ref函数使用场景
    目录前言简单了解 ref & reactivereactiverefreactive 能做的 ref 也能做,并且还是用 reactive 做的ref 能做,但是 react...
    99+
    2024-04-02
  • vue3中的ref、reactive怎么使用
    本篇内容主要讲解“vue3中的ref、reactive怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“vue3中的ref、reactive怎么使用”吧!reactive()基本用法在 Vu...
    99+
    2023-07-05
  • Vue3中reactive函数toRef函数ref函数简介
    目录reactive函数用法:toRef函数(了解即可)用法:ref函数定义响应式数据直接定义使用获取dom获取组件实例对象reactive函数 reactive用于定义响应式数据(...
    99+
    2024-04-02
  • vue3中ref和reactive的用法和解析(推荐)
    目录1.前言2.比较3.ref源码解析4.reactive源码解析createReactiveObjecthandles的组成get陷阱set陷阱5.总结1.前言  &nb...
    99+
    2023-03-19
    vue3 ref和reactive用法 vue3 ref和reactive
  • vue3 ref和reactive的区别有哪些
    本文小编为大家详细介绍“vue3 ref和reactive的区别有哪些”,内容详细,步骤清晰,细节处理妥当,希望这篇“vue3 ref和reactive的区别有哪些”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一...
    99+
    2023-07-05
  • 浅谈vue3中ref、toRef、toRefs 和 reactive的区别
    目录一、ref——定义任意类型响应式数据二、reactive——定义响应式对象三、toRef——将一个 rea...
    99+
    2024-04-02
  • 详解Vue3中ref和reactive函数的使用
    目录前言ref 函数介绍ref 函数使用ref 函数处理基本数据类型ref 函数处理复杂数据类型ref 函数获取单个DOM元素其他相关方法reactive 函数介绍reactive ...
    99+
    2024-04-02
  • 详解vue3中ref和reactive用法和区别
    vue3中ref和reactive区别 1、前言2、基本用法2.1 ref2.2 reactive 3、ref和reactive定义数组对比3.1 ref定义数组3.1 reactive定义数组 4、ref 和reactiv...
    99+
    2023-08-30
    vue.js javascript ecmascript
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作