当前位置: 首页 > news >正文

Vue3.0 toRef toRefs :VCA模式

简介

作用: 创建一个ref对象,其value值指向另一个对象中的某个属性

语法: const name = toRef(person, 'name')

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

扩展: toRefs与toRef功能一致,但可以批量创建多个ref对象,

语法:toRefs(person)

案列

<template><div><button @click="getData">点我</button><button @click="myClick">点我修改名称Email</button><div>{{ name }}--{{ age }}--{{ email }}--{{ cpu }}--{{ screen }}--{{ mobile }}</div><ul><li v-for="item in list">{{ item }}</li></ul></div>
</template>
<script>
import { reactive, ref, toRef, toRefs } from 'vue';
export default {setup() {const mydata = reactive({email: "ab@qq.com"})const obj = reactive({name: "张三",age: 29,datalist: ["aaa", "bbb", "ccc"],mytitle: "",})const myPhone = ref({cpu: "麒麟9000",screen: 9.0})const myClick = () => {mydata.email = "123@qq.com"}const mobile = ref("18650999009")const getData = () => {console.log("被执行了")let bannerList = reactive({list: [],// 模板中直接 写入 list 就可以了});fetch("./src/1.json").then(res => res.json()).then(res => { //模拟一个异步请求:1.json的内容是:{"list":["中国","美国","俄罗斯"]}bannerList.list = res.list;})return bannerList;}return {//toRef将对象中的属性变成响应式数据,修改响应式数据是会影响到原始数据。//单个转化方式(创建一个ref对象)//toRef(mydata,"email")的作用就是将mydata对象中的email暴露出去//这样做的好处就是://如果我们直接暴露出去mydata,如retrun{mydata} 在Dom模板中我要用到email的值就需要【对象名称.属性名称】的方式来取值 如:{{mydata.email}}//如果用return{email: toRef(mydata,"email")} 暴露出去,在Dom模板中我要用到email的值就直接用email就行了 如:{{email}}email: toRef(mydata, "email"),//注意:不能写成:email:mydate.email 因为这样写就不是响应式的了,到时候你执行myClick修改了email,Dom模板中的email值也不会发生改变()//批量转化方式(批量创建多个ref对象)//...toRefs(obj)的作用是将obj对象里面的每一项作为单独的项暴露出去:等同于 retrun{ name:toRef(obj,"name"),age:toRef(obj,"age"),datalist:toRef(obj,"datalist"),mytitle:toRef(obj,"mytitle")}//...toRefs(obj)的好处就是:在Dom模板中使用的时候就不需要用【对象名称.属性名称】了.//例如://retrun{obj}的方式,在Dom模板中我要用到name的值就需要这样来取 如:{{obj.name}}//retrun{...toRefs(obj)}的方式,在Dom模板中我要用到name的值就直接取 如:{{name}}...toRefs(obj),...toRefs(getData()),     //将getData()方法中的返回数据暴露出去...toRefs(myPhone.value), //注意这种用ref包裹的对象,需要在对象名后面.valuemobile,myClick,}}
}
</script>

ES6方法:"..."展开运算符 

<script>let a = [1, 2, 3]let b = [4.5, 6]//ES6的方法: ...var c = [...a, ...b]console.log(c) //输出:[1,2,3,4,5,6]
</script>

...就是把数组里面的内容给展开,...a就是把a里面的内容全部展开,也就是1,2,3,然后...b展开以后和a展开放在一起,就成了c那样子

http://www.lryc.cn/news/215573.html

相关文章:

  • VS Code提取扩展时出错。XHR failed
  • 大模型需要哪类服务器
  • Java进阶(List)——面试时List常见问题解读 结合源码分析
  • 0基础学习PyFlink——个数滑动窗口(Sliding Count Windows)
  • vue3+ts 提取公共方法
  • C++ ->
  • VR全景在医院的应用:缓和医患矛盾、提升医院形象
  • 【python基础】format格式化函数的使用
  • Java web(三):Http、Tomcat、Servlet
  • Java实现Hive UDF详细步骤 (Hive 3.x版本,IDEA开发)
  • Vue进阶(幺陆肆)Apache的Access.log分析总结
  • Apple 苹果发布 M3、M3 Pro 和 M3 Max 芯片
  • Linux常用命令及主流服务部署大全
  • list-watch集群调度
  • 深度强化学习中的神经网络部分的作用是什么?一般如何选择合适的神经网络呢?
  • 若依系统的数据导入功能设置
  • vue页面父组件与子组件相互调用方法和传递参数值
  • vim使用
  • 人工智能基础_机器学习014_BGD批量梯度下降公式更新_进一步推导_SGD随机梯度下降和MBGD小批量梯度下降公式进一步推导---人工智能工作笔记0054
  • Android STR研究之一
  • 单链表的详解实现
  • 抛弃 scp 改用 rsync,让 Linux 下文件传输高效无比
  • Leetcode 2919. Minimum Increment Operations to Make Array Beautiful
  • 关键词搜索亚马逊商品数据接口(标题|主图|SKU|价格|优惠价|掌柜昵称|店铺链接|店铺所在地)
  • [计算机提升] Windows系统软件:娱乐类
  • 【Git企业开发】第五节.远程操作
  • idea 配置checkstyle全过程
  • 小程序如何设置自动使用物流账号发货
  • 高性能渲染——详解Html Canvas的优势与性能
  • 2023.10 各个编程语言 受欢迎指数 排行