vues ref reactive refs toRefs
一 ref
ref是什么
- 可以生成 值类型(即基本数据类型) 的响应式数据;,
- 值存在ref对象的value里, 通过value来修改值;
- 用于模板和reactive, 也可当做dom里的ref使用
- ref 不仅可以用于响应式,还可以用于模板的 DOM 元素。
使用: let a = ref(1);
取值: a.value
<template><p ref="elemRef">今天是周一</p>
</template><script>
import { ref, onMounted } from 'vue'export default {name: 'RefTemplate',setup(){const elemRef = ref(null)onMounted(() => {console.log('ref template', elemRef.value.innerHTML, elemRef.value)})return{elemRef}}
}
</script>
二 reactive toRef toRefs
reactive是什么
让对象变成响应式的对象, reactive可直接对ref对象解包
使用: let a = reactive({name:1, age: 1})
取值: a.name,
注意: 如果对reactive响应式对象进行解构的话, 会失去响应式
正确用法: 使用toRef, toRefs
let a = reactive({name: 'aaa', age: 1});
return {...toRefs(a)
}let a = reactive({name: 'aaa', age: 1});
let b = toRef(a, 'age');
return {b
}
三 最佳使用方式
- 用 reactive 做对象的响应式,用 ref 做值类型的响应式。
- setup 中返回 toRefs(state) ,或者 toRef(state, ‘xxx’) 。
- 为了防止误会产生, ref 的变量命名尽量都用 xxxRef ,这样在使用的时候会更清楚明了。
- 合成函数返回响应式对象时,使用 toRefs
四 深入理解
为什么需要用ref
值类型(即基本数据类型)无处不在,如果不用 ref 而直接返回值类型,会丢失响应式。
比如在 setup 、 computed 、合成函数等各种场景中,都有可能返回值类型。
Vue 如果不定义 ref ,用户将自己制造 ref ,这样反而会更加混乱。为何ref需要.value属性
通过上面的分析我们知道, ref 需要通过 .value 来修改值。这看起来是一个很麻烦的操作,总是频繁的 .value 感觉特别琐碎。那为什么一定要 .value 呢?我们来揭开它的面纱。
ref 是一个对象,这个对象不丢失响应式,且这个对象用 value 来存储值。
因此,通过 .value 属性的 get 和 set 来实现响应式。
只有当用于 模板 和 reactive 时,不需要 .value 来实现响应式,而其他情况则都需要。为什么需要toRef和toRefs
与 ref 不一样的是, toRef 和 toRefs 这两个兄弟,它们不创造响应式,而是延续响应式。创造响应式一般由 ref 或者 reactive 来解决,而 toRef 和 toRefs 则是把对象的数据进行分解和扩散,其这个对象针对的是响应式对象而非普通对象。总结起来有以下三点:
初衷: 在不丢失响应式的情况下,把对象数据进行 分解或扩散。
前提: 针对的是响应式对象( reactive封装的)而非普通对象。
注意: 不创造响应式,而是延续响应式。
vues ref reactive refs toRefs相关推荐
- vue中ref、reactive和 toRefs toRef
ref和reactive都是响应式的引用,其原理是通过 proxy 对数据进行封装,当数据变化时,触发模版等内容的更新, ref 处理基础类型的数据(string,number..),reactive ...
- VUE3 reactive与toRefs函数
Vue3.0中还为我们提供了一个对象式响应的reactive函数 . Reactive函数创建一个响应式对象. 一:Reactive函数 其实,在我看来,reactive函数 就是VUE3.0为我们提 ...
- vue3学习笔记(ref, reactive, setup, hook...)
目录 一.搭建项目 二.常用的Composition API 1.ref函数(实现响应式) 2.reactive函数 3.vue2和vue3响应式的区别 4. setup参数 5.计算属性和监视 6. ...
- Vue中的 ref 和 $refs
官网解释: ref 被用来给DOM元素或子组件注册引用信息.引用信息会根据父组件的 $refs 对象进行注册.如果在普通的DOM元素上使用,引用信息就是元素; 如果用在子组件上,引用信息就是组件实例 ...
- vue3——ref reactive函数
ref:定义一个响应式的数据 使用方法:const xxx = ref(value) 修改时通过xxx.value = *** 修改 例如 <template><h1>一个人的 ...
- vue ref reactive
ref 接受一个内部值并返回一个响应式且可变的 ref 对象.ref 对象具有指向内部值的单个 property .value. 示例: const count = ref(0) console.lo ...
- 【收藏】Vue中ref和$refs的介绍及使用
实例(通过ref特性调用子组件的方法) [1]子组件code: <template><div>{{msg}}</div> </template>< ...
- ref获取元素 vue 删除子元素_vue中的 ref 和 $refs
相信前端开发或者后端开发都用过jquery,因为不是数据驱动,为了获取某些元素的value值,都操作过Dom元素. // 使用Jquery获取Dom元素值$("#id").text ...
- vue3.0 ref reactive nextTick watch toRaw defineProps defineEmits
目前使用的一些属性持续更新中 ref:推荐定义基本数据类型(ref值也可以是对象,但是一般情况下是对象直接使用reactive更合理). const data = ref( {id: "1& ...
- Vue ref 和 $refs 获取元素宽高
Vue3当中获取 方法一:借助 ref() 函数 (推荐) <div ref="box">我是div </div>import { ref,onMounte ...
最新文章
- ​Java 中的内存溢出和内存泄露是什么?我给你举个有味道的例子​
- Idea terminal:不是内部或外部命令,也不是可行的程序或批处理文件
- python编程从入门到精通 叶维忠 pdf-零基础如何学习python?十本精品python书籍推荐...
- 使用JS在textarea在光标处插入内容
- D455 如何同时传输视频深度流和惯性单元IMU流?(双管道方法与调用回调方法)
- cefSharp通过js操控页面,含跨域操控
- 基于roslyn的动态编译库Natasha
- yii2之DetailView小部件
- GDB调试之ptrace实现原理
- android activty动画,Activity动画效果
- shell基础之exit,break,continue
- 为VMware ESXi主机添加本地存储的过程及注意事项-之3
- unity 找到的对象是动态加载,且两个不同的父物体上都有要的那个对象并有相同的名子
- linux将pdf转txt,如何快速把PDF转换成TXT
- 因需要**云音乐歌单转到apple music,不满**云音乐下载都是ncm格式,所以想办法转化格式
- Tomcat 9安装配置教程
- 哔哩哔哩H.265编码器在直播和点播的实践和应用
- 后基因组行为遗传学:从革命到常规(上)
- python解析mht文件_[原创].mht文件图片解析工具
- 一名IT民工开通博客
热门文章
- 【JetPack Compose】JetPack Compose简单介绍
- 设置一个动态的壁纸作为你的linux桌面
- Python爬虫:豆瓣电影 TOP 250
- c++ opencv添加logo_c++调用opencv实现图片叠加以及添加水印效果
- [Html 前端爱心源码] 照片爱心源码展示
- DBeaver查询结果页被隐藏时的处理办法
- 面经:MobileNetV123特点汇总
- 面临淡季的危机,为什么同行却全然不惧,软文推广很有用
- react 路由 V6新特性总结
- web2.0网站的功能创新(转)