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

龙华建设局网站厦门网站优化服务

龙华建设局网站,厦门网站优化服务,苏州好的网站公司名称,搜索引擎营销案例分析Vue3中的常见组件通信之$refs、$parent 概述 ​ 在vue3中常见的组件通信有props、mitt、v-model、 r e f s 、 refs、 refs、parent、provide、inject、pinia、slot等。不同的组件关系用不同的传递方式。常见的撘配形式如下表所示。 组件关系传递方式父传子1. props2. v-mod…Vue3中的常见组件通信之$refs、$parent 概述 ​ 在vue3中常见的组件通信有props、mitt、v-model、 r e f s 、 refs、 refs、parent、provide、inject、pinia、slot等。不同的组件关系用不同的传递方式。常见的撘配形式如下表所示。 组件关系传递方式父传子1. props2. v-model3. $refs4. 默认插槽、具名插槽子传父1. props2. 自定义事件3. v-model4. $parent5. 作用域插槽祖传孙、孙传祖1. $attrs2. provide、inject兄弟间、任意组件间1. mitt2. pinia props和自定义事件详见 Vue3中的常见组件通信之props和自定义事件 mitt用法详见 Vue3中的常见组件通信之mitt v-model用法详见 Vue3中的常见组件通信之v-model $attrs用法详见 Vue3中的常见组件通信之$attrs 接下来是$refs、$parent 6. r e f s 、 refs、 refs、parent $refs用于父传子$parent用于子传父。 6.1准备组件 准备三个组件一个父组件两个子组件。 父组件代码 templatediv classFatherdiv idd1h3这是父组件/h3存款{{ money }} 万元/divChild1/Child2//div /templatescript setup langts nameFather import Child1 from ./Child1.vue import Child2 from ./Child2.vue import {ref} from vue//数据 let money ref(100)/scriptstyle scoped.Father{background-color: rgb(155, 162, 168);padding: 10px;margin: 10px;}#d1{margin-left: 10px;} /style子组件1代码 templatediv classChild1h3这是子组件1/h3ulli书籍{{ book }} 本/lili玩具{{ toy }}/li/ul/div/templatescript setup langts nameChild1 import {ref} from vue//数据 let book ref(10) let toy ref(滑板车)/scriptstyle scoped.Child1{background-color: rgb(132, 114, 148);margin: 10px 0;padding: 10px;color: white;} /style子组件2代码 templatediv classChild2h3这是子组件2/h3ulli书籍{{ book }} 本/lili玩具{{ toy }}/li/ul/div /templatescript setup langts nameChild2 import {ref} from vue//数据 let book ref(6) let toy ref(水枪)/scriptstyle scoped.Child2{background-color: rgb(128, 132, 31);margin-top: 10px;padding: 10px;color:white} /style运行效果如下 6.2$refs实现父传子通信 需要先了解标签的ref属性的基本知识ref用在普通DOM标签上获取的是DOM节点ref用在组件标签上获取的是组件实例对象。 了解上面的基础知识后要在父组件中创建c1和c2用来存储ref标记的内容 //创建c1和c2用于存储ref标记的内容 let c1 ref() let c2 ref()在CHild1和Ch2组件标签上添加ref属性 Child1 refc1/ Child2 refc2/在Child1和Child2的组件内需要添加以下代码用来把数据交出去 //把数据交出去 defineExpose({book,toy})此时在父组件中已经拿到了子组件中的数据可以对这些数据进行操作如下代码定义一个函数用来改变子组件1中的toy的值 function changeC1Toy(){c1.value.toy 积木 }在父组件创建按钮并绑定click事件用来触发 changeC1Toy函数 button clickchangeC1Toy修改子组件1中的玩具/button运行后效果如下 $refs可以在父组件中获取所有的用ref标记的子组件的实例对象如果没有用ref标记则获取不到例如再增加一个子组件Child3代码如下 templatediv classChild3h3这是子组件3/h3ulli书籍{{ book }} 本/lili玩具{{ toy }}/li/ul/div/templatescript setup langts nameChild3 import {ref} from vue//数据 let book ref(30) let toy ref(毛绒玩具)//把数据交出去 defineExpose({book,toy}) /scriptstyle scoped.Child3{background-color: rgb(120, 148, 114);margin: 10px 0;padding: 10px;color: white;} /style在父组件中引入子组件3 import Child3 from ./Child3.vue在页面呈现但是不添加ref属性 Child3 /接下来给父组件创建一个按钮并绑定click事件触发changeAllBook函数并传入$refs button clickchangeAllBook($refs)修改子组件的书籍数量/buttonchangeAllBook的函数代码如下 function changeAllBook(refs:any){console.log(refs)for (let key in refs){refs[key].book 1} }运行后点击按钮控制台打印的内容如下 可以看到$refs是一个响应式的对象对象内是c1和c2没有子组件3的实例对象。通过遍历把c1和c2中的book增加1运行效果如下图 以上通过操控父组件的按钮实现改变子组件中书籍的数量这便是父传子通信的一种。 6.3$parent实现子传父通信 $parent的用法与$refs用法类似$parent获取的是父组件的实例对象如下在子组件1中添加一个按钮并绑定单击事件触发minusMoney方法实现减少父组件中的存款 button clickminusMoney($parent)减少父组件存款/buttonminusMoney的代码如下 function minusMoney(parent:any){ parent.money - 1 }父组件需要写个宏函数把数据交出去 //将数据交出去 defineExpose({money})至此已经完成了子传父的通信点击子组件中的按钮可以对父组件中的数据进行操控如下图 6.4小结 以上便是$refs和$parent实现父子间通信的用法小结如下 **$refs**用来获取所有用ref标记的子组件的实例对象得到的是响应式对象数据类型不能获取没有用ref标记的子组件实例对象。 **$parent**用来获取父组件的实例对象。 注意组件中需要用宏函数defineExpose()把数据交出去不然获取不到数据。 以下是完整代码 父组件 templatediv classFatherdiv idd1h3这是父组件/h3存款{{ money }} 万元/divbutton clickchangeC1Toy修改子组件1中的玩具/buttonbutton clickchangeAllBook($refs)修改子组件的书籍数量/button!-- 组件标签的ref属性获取的是组件的实例对象 --Child1 refc1/Child2 refc2/Child3 //div /templatescript setup langts nameFather import Child1 from ./Child1.vue import Child2 from ./Child2.vue import Child3 from ./Child3.vue import {ref} from vue//数据 let money ref(100)//创建c1和c2用于存储ref标记的内容 let c1 ref() let c2 ref()//方法 function changeC1Toy(){c1.value.toy 积木 }function changeAllBook(refs:any){// console.log(refs)for (let key in refs){refs[key].book 1} }//将数据交出去 defineExpose({money}) /scriptstyle scoped.Father{background-color: rgb(155, 162, 168);padding: 10px;margin: 10px;}#d1{margin-left: 10px;} /style子组件1 templatediv classChild1h3这是子组件1/h3ulli书籍{{ book }} 本/lili玩具{{ toy }}/li/ulbutton clickminusMoney($parent)减少父组件存款/button/div /templatescript setup langts nameChild1 import {ref} from vue//数据 let book ref(10) let toy ref(滑板车)//方法 function minusMoney(parent:any){ parent.money - 1 }//把数据交出去 defineExpose({book,toy}) /scriptstyle scoped.Child1{background-color: rgb(132, 114, 148);margin: 10px 0;padding: 10px;color: white;}button{color: #000;} /style子组件2 templatediv classChild2h3这是子组件2/h3ulli书籍{{ book }} 本/lili玩具{{ toy }}/li/ul/div /templatescript setup langts nameChild2 import {ref} from vue//数据 let book ref(6) let toy ref(水枪)//把数据交出去 defineExpose({book,toy}) /scriptstyle scoped.Child2{background-color: rgb(128, 132, 31);margin-top: 10px;padding: 10px;color:white} /style
http://www.zqtcl.cn/news/289655/

相关文章:

  • 网站设计导航栏高度网站设计的经营范围
  • 帮别人建设网站多少利润北京网站建设公司华网制作作
  • 微信网站需要备案吗瑞安商业网站建设
  • 做网站如何计算工资wordpress stheme
  • 网站建设销售人才简历wordpress 搜索tag
  • 设计网站专业云南旅行社网站开发
  • 小规模开普票网站建设几个点张浦专业做网站
  • 点击图片跳转到网站怎么做链接网址后缀名大全
  • php网站开发优化crm客户系统
  • 韩国网站免费模板wordpress数据库名称
  • 如何修改网站发布时间贵阳网站建设报价
  • 东莞网站推广培训免费云电脑
  • 湖北网站建设详细方案脑叶公司手机版下载
  • 淄博网站制作平台形象怎样建设旅游网站
  • 广州花都网站建设网站改版协议
  • 中国建设协会网站首页工信部网站备案被删除
  • 丹阳网站建设案例dedecms 购物网站
  • 网站上怎么做动画广告视频下载seo黑帽是什么意思
  • 服装网站建设网综合社区网站开发费用
  • 做网站预付款 怎么做账做律师网站的网络公司
  • 购物网站开发模板小程序注册拉新
  • 怎么建立一个网站能够与讯飞云对话罗湖附近公司做网站建设哪家好
  • 唐山网站制作公司北京网站开发优选ls20227
  • php 网站备份代码广州网站设计公司招聘
  • 做ppt的网站兼职上海未来网站建设公司
  • 某某公司网站建设论文wordpress 企业 主题
  • 网站提示域名解析错误怎么办百度网址提交
  • 福建省住房城乡建设部网站车公庙网站建设
  • 长沙网站seo诊断ip138禁止查询该域名
  • 大学生网站设计作业动画ftp发布asp.net网站