您现在的位置是:网站首页> 编程资料编程资料
vue3的ref、isRef、toRef、toRefs、toRaw详细介绍_vue.js_
2023-05-24
268人已围观
简介 vue3的ref、isRef、toRef、toRefs、toRaw详细介绍_vue.js_
ref、isRef、toRef、toRefs、toRaw看着一堆类似的东西,一个头两个大,今天整理一篇文章详细介绍它们的功能及区别。
1、ref
ref 属性除了能够获取元素外,也可以使用 ref 函数,创建一个响应式数据,当数据值发生改变时,视图自动更新。
{{ str }}
2、isRef
检查变量是否为一个被 ref 包装过的对象,如果是返回 true ,否则返回 false。
import { ref, isRef, reactive } from 'vue' let str: string = ref('我是张三') let num: number = 1 let per = reactive({ name: '代码女神', work: '程序媛' }) console.log('strRes', isRef(str)) //true console.log('numRes', isRef(num)) //false console.log('perRes', isRef(per)) //false3、toRef
创建一个 ref 对象,其 value 值指向另一个对象中的某个属性。
toRef(obj, key) 将对象中的某个值转化为响应式数据,分为两种情况:
- toRef 定义原始非响应式数据,修改值时,原始数据和 copy 数据都会变的,但是视图不更新。
{{ obj.name }} ------- {{ name }}
注意:如果是在 DOM 挂载之前调用 chang 方法,改变数值,此时数据和视图都会发生改变。
- toRef 定义原始数据响应式数据,修改值时,原始数据,和 copy 数据都会改变,视图也会更新。
{{ obj.name }} ------- {{ name }}
最终值为 “李四”。
4、toRefs
toRefs 用来解构 ref、reactive 包裹的响应式数据。接收一个对象作为参数,遍历对象上的所有属性,将对象上的所有属性变成响应式数据。
let obj = reactive({ name: '姓名', age: 18, }) let { name, age } = toRefs(obj) const chang = () => { name.value = '钻石王老五' age.value++ } {{ name }} ------- {{ age }} toRefs 解构数据时,如果某些参数作为可选参数,可选参数不存在时就会报错,如:
let obj = reactive({ name: '姓名', age: 18, }) let { name, age, work } = toRefs(obj) const chang = () => { name.value = '钻石王老五' age.value++ console.log('work', work.value) work.value = '程序媛' }此时可以使用 toRef 解决此问题,使用 toRef 解构对象某个属性时,先检查对象上是否存在该属性,如果存在就继承对象上的属性值,如果不存在就会创建一个。
修改上边的代码为:
let obj = reactive({ name: '姓名', age: 18, }) let { name, age } = toRefs(obj) let work = toRef(obj, 'work') const chang = () => { name.value = '钻石王老五' age.value++ console.log('work', work.value) work.value = '程序媛' }5、toRaw
将响应式对象转为原始对象。做一些不想被监听的事情,从 ref 或 reactive 得到原始数据。
修改原响应式数据时,toRaw 转换得到的数据会被修改,视图也会更新,如:
{{ obj.name }} ------- {{ obj.age }}
{{ newObj }}
如果修改 toRaw 得到的原始数据,原数据也会被修改,但是视图不更新。如:
{{ obj.name }} ------- {{ obj.age }}
{{ newObj }}
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对的支持。如果你想了解更多相关内容请查看下面相关链接
相关内容
- Vue路由配置方法详细介绍_vue.js_
- Vue首页界面加载优化实现方法详解_vue.js_
- Vue tagsview实现多页签导航功能流程详解_vue.js_
- js如何读取csv内容拼接成json_javascript技巧_
- React路由参数传递与嵌套路由的实现详细讲解_React_
- React通过classnames库添加类的方法_React_
- React路由渲染方式与withRouter高阶组件及自定义导航组件应用详细介绍_React_
- 使用nodejs解析json数据_node.js_
- React状态管理Redux的使用介绍详解_React_
- 停止编写 API函数原因示例分析_JavaScript_
