1.什么是ref?

  1. 1.refreactive-样
  2. 也是用来实现响应式数据的方法
  3. 由于reactive必须传递一个对象,
  4. 所以导致在企业开发中如果我们只想让某个变量实现响应式的时候会非常麻烦
  5. 所以Vue3就给我们提供了ref方法,实现对简单值的监听
  6. 2.ref本质:
  7. ref底层的本质其实还是reactive
  8. 系统会自动根据我们给ref传入的值将它转换成
  9. ref(xx) -> reactive({value:xx})
  10. 3.ref注意点:
  11. Vuehtml中使用ref的值不用通过value获取
  12. JS中使用ref的值必须通过value获取

2.在Vue的html中使用ref的值不用通过value获取

  1. <template>
  2. <div>
  3. <div>
  4. <!--在Vue的html中使用ref的值不用通过value获取 -->
  5. <li>{{state}}</li>
  6. <button @click="func1">按钮</button>
  7. </div>
  8. </div>
  9. </template>
  10. <script>
  11. import {ref} from 'vue'
  12. export default {
  13. name: 'App',
  14. setup(){
  15. let state=ref(100);
  16. function func1(){
  17. <!-- JS中使用ref的值必须通过value获取 -->
  18. state.value=200
  19. }
  20. return {state ,func1}
  21. },
  22. }
  23. </script>

3. ref和reactive区别:

  1. 区别一:
  2. 如果在template里使用的是ref类型的数据,那么Vue会自动帮我们添加.value
  3. 如果在template里使用的是reactive类型的数据,那么Vue不会自动帮我们添加.value
  4. 区别二:
  5. ref函数只能够去监听简单类型的数据变化,不能够去监听,复杂类型的变化(数组、对象)
  6. reactive函数传递的参数必须是对象(json/arr)
  7. 区别三
  8. __v_isRef ref中拥有的属性
  9. Vue底层就是根据这个来进判断是否需要在template添加.value的哈
  10. reactive 是没有__v_isRef这个属性的,所以不会帮我们添加.value

4.ref类型中有__v_isRef 这个属性

  1. <template>
  2. <div>
  3. <div>
  4. <li>{{state}}</li>
  5. <button @click="func1">按钮</button>
  6. </div>
  7. </div>
  8. </template>
  9. <script>
  10. import {ref} from 'vue'
  11. export default {
  12. name: 'App',
  13. setup(){
  14. let state=ref(100)
  15. function func1(){
  16. console.log( 'stateObj下的属性',state );// 有 __v_isRef 这个属性
  17. state.value=200;
  18. }
  19. return {state,func1}
  20. },
  21. }
  22. </script>

5. isRef,isReactive 类型判断

  1. isRef是用来检测ref类型的,如果是返回的是true,否者返回false
  2. isReactive是用来检测reactive类型的,如果是返回的是true,否者返回false
  1. <template>
  2. <div>
  3. <div>
  4. <li>{{state}}</li>
  5. <button @click="func1">按钮</button>
  6. </div>
  7. </div>
  8. </template>
  9. <script>
  10. import {ref} from 'vue'
  11. // 引入,你也可以在上一句中直接导入
  12. import {isRef,isReactive} from 'vue'
  13. export default {
  14. name: 'App',
  15. setup(){
  16. let state=ref(100)
  17. function func1(){
  18. //是否是ref类型的
  19. console.log(isRef(state));//true
  20. //是否是reactive类型的
  21. console.log(isReactive(state));//false
  22. state.value=200;
  23. }
  24. return {state,func1}
  25. },
  26. }
  27. </script>

认真总结Vue3中ref与reactive区别和isRef与isReactive 类型判断的更多相关文章

  1. 第三十九篇:Vue3 watch(ref和reactive的监视)

    好家伙, 1.vue2中的watch是调用配置项,(只能写一个) vue3中的watch是一个函数(可以写很多个) 2.watch一些用法: 这里是定义的数据 set up(){ let sum =r ...

  2. 熬夜讲解vue3组合API中setup、 ref、reactive的用法

    1.初识setUp的使用 简单介绍下面的代码功能: 使用ref函数,去使用监听某一个变量的变化,并且把它渲染到视图上. setUp函数是组合API的入口函数.这个是非常重要的. setUp可以去监听变 ...

  3. Vue3中的响应式对象Reactive源码分析

    Vue3中的响应式对象Reactive源码分析 ReactiveEffect.js 中的 trackEffects函数 及 ReactiveEffect类 在Ref随笔中已经介绍,在本文中不做赘述 本 ...

  4. # vue3 ref 和 reactive 函数

    vue3 ref 和 reactive 函数 前言 上一篇博文介绍 setup 函数的时候,最后出现一个问题,就是在 setup 函数中,编写一个事件,直接去修改定义的变量,发现页面上没有更新成功,并 ...

  5. Vue3.0工程创建 && setup、ref、reactive函数 && Vue3.0响应式实现原理

    1 # 一.创建Vue3.0工程 2 # 1.使用vue-cli创建 3 # 官方文档: https://cli.vuejs.org/zh/guide/creating-a-project.html# ...

  6. C#中ref和out的区别浅析

    这篇文章主要介绍了C#中ref和out的区别浅析,当一个方法需要返回多个值的时候,就需要用到ref和out,那么这两个方法区别在哪儿呢,需要的朋友可以参考下   在C#中通过使用方法来获取返回值时,通 ...

  7. [转] C#中out和ref之间的区别

    gskcc 的原文地址 C#中out和ref之间的区别 首先:两者都是按地址传递的,使用后都将改变原来参数的数值. 其次:ref可以把参数的数值传递进函数,但是out是要把参数清空,就是说你无法把一个 ...

  8. Spring中<ref local=""/>与<ref bean=""/>区别

    小 Spring中<ref local=""/>与<ref bean=""/>区别 (2011-03-19 19:21:58) 转载▼ ...

  9. Spring配置文件中使用ref local与ref bean的区别

    Spring配置文件中使用ref local与ref bean的区别.在ApplicationResources.properties文件中,使用<ref bean>与<ref lo ...

随机推荐

  1. Mac FTP工具推荐-Transmit

    Transmit 是专为mac用户设计的一款功能强大的FTP客户端,Transmit5 mac兼容于FTP,SFTP和TLS/SSL协议,提供比Finder更加迅速的iDisk账户接入.与此同时,用户 ...

  2. Redis 存储对象信息是用 Hash 还是 String

    Redis 内部使用一个 RedisObject 对象来表示所有的 key 和 value,RedisObject 中的 type,则是代表一个 value 对象具体是何种数据类型,它包含字符串(St ...

  3. 拷贝构造函数第一个参数最好使用const

    拷贝构造函数的第一个参数要求是自身类型的引用,但是没有一定要求具有底层const属性即对常量的引用,但是使用时最好加上const,原因是我们可能在某些"不知道"的情况下对常量对象调 ...

  4. 26.Set

    1.Set集合 1.1Set集合概述和特点[应用] 可以去除重复 存取顺序不一致 没有带索引的方法,所以不能使用普通for循环遍历,也不能通过索引来获取,删除Set集合里面的元素 1.2Set集合的使 ...

  5. [bug] IDEA中解决程序包javax.servlet不存在

    参考 https://blog.csdn.net/qq_41283865/article/details/81865806

  6. [DB] mysql windows 安装

    参考 mysql安装 https://www.cnblogs.com/zhangkanghui/p/9613844.html navicat for mysql 中文破解版(无需激活码) https: ...

  7. grub救援模式

    http://www.jinbuguo.com/linux/grub.cfg.html

  8. 【转载】复制文件到已存在的Jar

    复制文件到已存在的Jar 技术标签: Ant  OSGI  Eclipse  脚本  配置管理   问题 这两天在写一个小东西.这个小东西是一个大东西的一部分.其实也就是其中的一两个类.而这个大东西需 ...

  9. tar解压某个目录 tar解压某个指定的文件或者文件夹

    tar解压某个目录 tar解压某个指定的文件或者文件夹 发布时间:2017-05-30 来源:服务器之家   1. 先查看压缩文档中有那些文件,如果都不清楚文件内容,然后就直接解压,这个是不可能的 使 ...

  10. python文件对象几种操作模式区别——文件操作方法详解

    文件对象的字节模式/b模式(以utf-8编码为例) 读操作 写操作 指针操作 ASCII字节 返回bytes/字节类型的Ascii 写入bytes类型字节 例如:b'This is ascii' 使用 ...