Vue3中toRef与toRefs的区别


Posted in Vue.js onMarch 24, 2022

作用:创建一个ref对象,其value值指向另外一个对象中的某个属性。这样在模板中就可以直接使用属性名而不用麻烦的再加对象名前缀了。

语法:

const name = toRef(person,'name')

应用:要将响应式对象中的某个属性单独提供给外部使用时。

扩展:toRefstoRef功能一致,但可以批量创建多个ref对象,需要注意的是它只会解析对象的第一层属性,语法直接传入对象 toRefs(person)

示例:

toRef

<template>
  <span>{{person}}</span>
  <h2>姓名:{{name}}</h2>
  <h2>年龄:{{age}}</h2>
  <h2>薪资:{{salary}}K</h2>
  <button @click="name+='~'">修改姓名</button>
  <button @click="age++">增涨年龄</button>
  <button @click="salary++">涨薪</button>
</template>
<script>
    import {reactive,toRef,toRefs} from 'vue'
    export default{
        name:'App',
        setup(){
            let person = reactive({
                name:'张三',
                age:18,
                job:{
                    j1:{
                        salary:20
                    }
                }
            })
            return {
                person,   //如果只是像之前一样定义reactive后 模板中需要使用属性都要加上对象名(person.name)
                name:toRef(person,'name'), 
                age:toRef(person,'age'),
                salary:toRef(person.job.j1,'salary')
                /*
                但有了toRef后就可以在return中定义数据名称,使用toRef转换为ref的响应式基本数据,
                在模板中就不用再繁琐的加对象名,并且是双向绑定,模板中的修改也会影响到原对象
                */
            }
        }
    }
</script>

在线浏览效果:

Vue3中toRef与toRefs的区别

toRefs 

<script>
    import {reactive,toRef,toRefs} from 'vue'
    export default{
        name:'App',
        setup(){
            let person = reactive({
                name:'张三',
                age:18,
                job:{
                    j1:{
                        salary:20
                    }
                }
            })
            
            return {
                person,
                  ...toRefs(person) 
                /*
                toRefs会将对象第一层的属性都转换为ref基本类型所以用到ES6的语法将这些基本类型都展开来
                注意!!toRefs只会将第一层转换为ref基本类型 
                */
            }
        }
    }
</script>

浏览器效果图:

Vue3中toRef与toRefs的区别

到此这篇关于Vue3中toRef与toRefs的区别的文章就介绍到这了,更多相关toRef与toRefs内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Vue.js 相关文章推荐
vue使用echarts图表自适应的几种解决方案
Dec 04 Vue.js
vue实现购物车的小练习
Dec 21 Vue.js
Vue通过阿里云oss的url连接直接下载文件并修改文件名的方法
Dec 25 Vue.js
Vue 修改网站图标的方法
Dec 31 Vue.js
vue+vant 上传图片需要注意的地方
Jan 03 Vue.js
手写Vue源码之数据劫持示例详解
Jan 04 Vue.js
vue.js实现点击图标放大离开时缩小的代码
Jan 27 Vue.js
vue实现拖拽进度条
Mar 01 Vue.js
Vue如何实现组件间通信
May 15 Vue.js
详解vue身份认证管理和租户管理
May 25 Vue.js
vue实现锚点定位功能
Jun 29 Vue.js
vue中data里面的数据相互使用方式
Jun 05 Vue.js
一起来看看Vue的核心原理剖析
Mar 24 #Vue.js
深入讲解Vue中父子组件通信与事件触发
Mar 22 #Vue.js
关于Vue中的options选项
Mar 22 #Vue.js
vue+echarts实现多条折线图
vue使用echarts实现折线图
浅谈Vue的computed计算属性
VUE中的v-if与v-show区别介绍
Mar 13 #Vue.js
You might like
PHP中,文件上传
2006/12/06 PHP
JS时间选择器 兼容IE6,7,8,9
2012/06/26 Javascript
解读JavaScript中 For, While与递归的用法
2013/05/07 Javascript
jquery select多选框的左右移动 具体实现代码
2013/07/03 Javascript
莱鸟介绍javascript onclick事件
2016/01/06 Javascript
基于JQuery打造无缝滚动新闻步骤详解
2016/03/31 Javascript
js css+html实现简单的日历
2016/07/14 Javascript
Bootstrap缩略图的创建方法
2017/03/22 Javascript
详解从零搭建 vue2 vue-router2 webpack3 工程
2017/11/22 Javascript
AngularJs 禁止模板缓存的方法
2017/11/28 Javascript
Angular4学习教程之DOM属性绑定详解
2018/01/04 Javascript
vue2.0 父组件给子组件传递数据的方法
2018/01/15 Javascript
JavaScript深拷贝和浅拷贝概念与用法实例分析
2018/06/07 Javascript
vue使用codemirror的两种用法
2019/08/27 Javascript
vue学习笔记之作用域插槽实例分析
2020/02/01 Javascript
node.js使用stream模块实现自定义流示例
2020/02/13 Javascript
node+multer实现图片上传的示例代码
2020/02/18 Javascript
vue.js+element 默认提示中英文操作
2020/11/11 Javascript
[01:50:49]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Aster BO3 第三场 1月24日
2021/03/11 DOTA
Python连接PostgreSQL数据库的方法
2016/11/28 Python
python实现读取并显示图片的两种方法
2017/01/13 Python
Django 源码WSGI剖析过程详解
2019/08/05 Python
python十进制转二进制的详解
2020/02/07 Python
基于python实现音乐播放器代码实例
2020/07/01 Python
JACK & JONES瑞典官方网站:杰克琼斯欧式风格男装
2017/12/23 全球购物
德国珠宝和配件商店:Styleserver
2021/02/23 全球购物
函授自我鉴定
2013/11/06 职场文书
小学中秋节活动方案
2014/02/06 职场文书
药学职务聘任书
2014/03/29 职场文书
文明和谐家庭事迹材料
2014/05/18 职场文书
2016年劳模先进事迹材料
2016/02/25 职场文书
车辆挂靠协议书
2016/03/23 职场文书
如何写好闭幕词
2019/04/02 职场文书
background-position百分比原理详解
2021/05/08 HTML / CSS
FP-growth算法发现频繁项集——构建FP树
2021/06/24 Python
CKAD认证中部署k8s并配置Calico插件
2022/03/31 Servers