您现在的位置是:网站首页> 编程资料编程资料
浅谈vue3中ref、toRef、toRefs 和 reactive的区别_vue.js_
2023-05-24
391人已围观
简介 浅谈vue3中ref、toRef、toRefs 和 reactive的区别_vue.js_
一、ref——定义任意类型响应式数据
- ref 能定义“任何类型”的响应式数据(ref 在 vue3 中指响应式数据)。
- 参数可以传入任意数据类型。
- 使用 ref 定义的属性必须通过 .value 的形式才能修改其值。属性的值一旦被修改就会触发模板的重新渲染以显示最新的值。
- 对于在 setup 返回的 refs(return 出的对象里的属性),因为在模板中访问它们时,它们会被自动浅解包,所以在 template 中使用时无需加 .value。
1、对于在 setup 中手动返回的响应式数据,在 template 中使用时无需加 .value
例如:
{{ count }}
2、ref 能定义“任何类型”的响应式数据
如果将 setup 写在
二、reactive——定义响应式对象
- 用来定义“对象类型”的响应式数据。
- 参数只能传入对象类型,返回一个具有响应式状态的副本。
- 使用 reactive 定义的属性可以直接使用,不需要加 .value。
- 不要直接解构使用 reactive 定义的响应式对象,否则会造成该对象脱离 ref 响应式。需要用 toRefs 将其转化为响应式数据对象,然后再解构返回。
例如:
{{ obj.count }}
三、toRef——将一个 reactive 转化为一个 ref
- 针对一个响应式对象(reactive 封装)的 prop(属性)创建一个 ref,且保持响应式两者 保持引用关系。
- 接收两个参数:源响应式对象 和 属性名,返回一个 ref 数据。
- 获取数据值的时候需要加 .value。
- 使用 toRef 转化后生成的 ref 数据如果是引用类型数据时,那么它不是原始数据的拷贝,而是原始数据的引用,改变它的数据也会同时改变原始数据。
例如:在 setup 中使用父组件传递的 props 数据时,要引用 props 的某个属性,且要保持响应式连接,就必须使用 toRef。
{{ myTitle }}
四、toRefs——将多个 reactive 自动解构为多个 ref
- toRefs 用于将响应式对象转换为普通对象,其中普通对象的每个属性都是指向原始对象相应属性的 ref,两者保持引用关系。
- toRefs 常用于 ES6 的解构赋值操作。但是,对一个响应式对象直接解构时,解构后的数据将不再有响应式,而使用 toRefs 可以方便解决这个问题。
- 获取数据值的时候需要加 .value。
- 使用 toRefs 转化后生成的 ref 数据如果是引用类型数据时,那么它不是原始数据的拷贝,而是原始数据的引用,改变它的数据也会同时改变原始数据。
- 其作用和 toRef 类似,只不过 toRef 是对一个个属性手动赋值,而 toRefs 是自动解构赋值。
{{ myTitle }}
到此这篇关于浅谈vue3中ref、toRef、toRefs 和 reactive的区别的文章就介绍到这了,更多相关vue3 ref toRef toRefs reactive内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
您可能感兴趣的文章:
相关内容
- JavaScript中array.reduce()数组方法的四种使用实例_javascript技巧_
- js面向对象编程OOP及函数式编程FP区别_JavaScript_
- 小程序实现tab更换页面效果_javascript技巧_
- Vue.js实现页面后退时还原滚动位置的操作方法_javascript技巧_
- 微信小程序实现时间选择_javascript技巧_
- 微信小程序实现底部弹窗_javascript技巧_
- JS高级程序设计之class继承重点详解_JavaScript_
- JS class语法糖的深入剖析_JavaScript_
- vue3 el-table结合seamless-scroll实现表格数据滚动的思路详解_vue.js_
- MutationObserver在页面水印实现起到的作用详解_JavaScript_
