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实现广告栏上下滚动效果
Nov 26 Vue.js
Vue3+elementui plus创建项目的方法
Dec 01 Vue.js
vue从后台渲染文章列表以及根据id跳转文章详情详解
Dec 14 Vue.js
vue中watch的用法汇总
Dec 28 Vue.js
Vue仿Bibibili首页的问题
Jan 21 Vue.js
vue-router路由懒加载及实现的3种方式
Feb 28 Vue.js
Vue通过懒加载提升页面响应速度
May 10 Vue.js
vue组件的路由高亮问题解决方法
May 11 Vue.js
详解gantt甘特图可拖拽、编辑(vue、react都可用 highcharts)
Nov 27 Vue.js
vue如何使用模拟的json数据查看效果
Mar 31 Vue.js
vue ref如何获取子组件属性值
Mar 31 Vue.js
Vue操作Storage本地化存储
Apr 29 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
咖啡的植物学知识
2021/03/03 咖啡文化
php若干单维数组遍历方法的比较
2011/09/20 PHP
ThinkPHP做文字水印时提示call an undefined function exif_imagetype()解决方法
2014/10/30 PHP
php简单随机字符串生成方法示例
2017/04/19 PHP
JavaScript 继承详解 第一篇
2009/08/30 Javascript
匹配任意字符的正则表达式写法
2010/04/29 Javascript
javascript 面向对象 function类
2010/05/13 Javascript
js函数的引用, 关于内存的开销
2012/09/17 Javascript
基于OO的动画附加插件,可以实现弹跳、渐隐等动画效果 分享
2013/06/24 Javascript
JavaScript 基础表单验证示例(纯Js实现)
2017/07/20 Javascript
JS解析后台返回的JSON格式数据实例
2018/08/06 Javascript
微信小程序实现swiper切换卡内嵌滚动条不显示的方法示例
2018/12/20 Javascript
用Node写一条配置环境的指令
2019/11/14 Javascript
js实现金山打字通小游戏
2020/07/24 Javascript
[01:06:32]DOTA2上海特级锦标赛D组资格赛#1 EG VS VP第一局
2016/02/28 DOTA
Python中super关键字用法实例分析
2015/05/28 Python
Python 序列的方法总结
2016/10/18 Python
python多进程实现进程间通信实例
2017/11/24 Python
python使用PIL模块获取图片像素点的方法
2019/01/08 Python
Python实现的旋转数组功能算法示例
2019/02/23 Python
详解python内置常用高阶函数(列出了5个常用的)
2020/02/21 Python
python生成任意频率正弦波方式
2020/02/25 Python
Anaconda和ipython环境适配的实现
2020/04/22 Python
Python3爬虫mitmproxy的安装步骤
2020/07/29 Python
HTML5 Canvas概述
2009/08/26 HTML / CSS
只要五步 就可以用HTML5/CSS3快速制作便签贴特效(图)
2012/06/04 HTML / CSS
公共事业管理本科生求职信
2013/10/07 职场文书
保密承诺书
2014/03/27 职场文书
环保倡议书范文
2014/05/12 职场文书
餐饮食品安全责任书
2015/01/29 职场文书
企业介绍信范文
2015/01/30 职场文书
2015年乡镇残联工作总结
2015/05/13 职场文书
员工离职证明范本
2015/06/12 职场文书
医务人员岗前培训心得体会
2016/01/08 职场文书
广告文案的撰写技巧(实用干货)
2019/08/23 职场文书
Golang数据类型和相互转换
2022/04/12 Golang