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

河北省住房和建设厅网站网站地图怎么用

河北省住房和建设厅网站,网站地图怎么用,成品1688网站,房产微网站Vue3组件通信之二_defineExpose编译器宏函数 文章目录 Vue3组件通信之二_defineExpose编译器宏函数1. defineExpose2.简单理解3. 实战案例1. 父子组件之间通信1. 子组件中通过defineExpose暴露属性或方法2. 父组件中使用子组件暴露的方法 2. 同级(兄弟)组件之间方法调用或传值1…Vue3组件通信之二_defineExpose编译器宏函数 文章目录 Vue3组件通信之二_defineExpose编译器宏函数1. defineExpose2.简单理解3. 实战案例1. 父子组件之间通信1. 子组件中通过defineExpose暴露属性或方法2. 父组件中使用子组件暴露的方法 2. 同级(兄弟)组件之间方法调用或传值1. 子组件12. 子组件22. 借助父组件实现子组件1与子组件2之间通信 1. defineExpose 官网文档https://cn.vuejs.org/api/sfc-script-setup.html#defineexpose 使用 script setup 的组件是默认关闭的——即通过模板引用或者 $parent 链获取到的组件的公开实例不会暴露任何在 script setup 中声明的绑定。 可以通过 defineExpose 编译器宏来显式指定在 script setup 组件中要暴露出去的属性 script setup import { ref } from vueconst a 1 const b ref(2)defineExpose({a,b }) /script当父组件通过模板引用的方式获取到当前组件的实例获取到的实例会像这样 { a: number, b: number } (ref 会和在普通实例中一样被自动解包) 2.简单理解 defineExpose使用在子组件中或兄弟组件之间的通讯可以暴露属性或方法给父组件使用和调用 3. 实战案例 1. 父子组件之间通信 1. 子组件中通过defineExpose暴露属性或方法 子组件中定义,SysDictAddComponent.vue如下 script setup langts import { ref, defineExpose} from vue;const addSubmit () {//... }let msg ref(hello,jinshengyuan) //暴露属性和方法给其父组件使用 defineExpose({msg,addSubmit,updateFrom }) /script2. 父组件中使用子组件暴露的方法 引入子组件时给给组件设置ref属性如 SysDictAddComponent refsysDictAddComponent/SysDictAddComponentsetup函数中定义ref对象const sysDictAddComponent ref()通过sysDictAddComponent.value.属性或sysDictAddComponent.value.方法名进行使用具体使用如下面末尾部分 templatea-drawertitle新增用户:width720:visiblevisible:body-style{ paddingBottom: 80px }:footer-style{ textAlign: right }closeonClose!--新增用户form组件--SysDictAddComponent refsysDictAddComponent/SysDictAddComponent!--按钮--template #extraa-spacea-button clickonClose关闭/a-buttona-button typeprimary clickonSubmit提交/a-button/a-space/template/a-drawer /template script setup langts import {ref, watch} from vue; import SysDictAddComponent from ../../components/sys/SysDictAddComponent.vue;//接收父组件传递的对象 const props defineProps{subVisible: boolean }() //抽屉是否显示函数 const visible refboolean(false);//监听子组件传递的subVisible值并给visible重新赋值 watch(() (props.subVisible), (newVal, oldVal) {console.log(new: newVal, old: oldVal)visible.value newVal })//定义emit事件 const emit defineEmits([changeSubVisible,addSuccess])const onClose () {visible.value false;//通知父组件改属性emit(changeSubVisible, false) }; //获取子组件暴露的对象 const sysDictAddComponent ref() //提交时校验 const onSubmit () {//visible.value false;//调用SysUserAddComponent组件中通过defineExpose暴漏的addSubmit方法sysDictAddComponent.value.addSubmit()// } /script2. 同级(兄弟)组件之间方法调用或传值 注意同级(兄弟)组件之间传值是借助父组件来完成的 1. 子组件1 子组件1FormButton.vue templateel-button typeprimary clicksubmit提交/el-buttonel-button clickreset重置/el-buttonel-button clickclose关闭/el-button /template script setup langts import {defineEmits, inject, ref} from vue//调用父组件的方法执行关闭操作 const emits defineEmits([doSubmit,doClose]); const close () {emits(doClose) }const submit () {emits(doSubmit) } //1.使用inject函数调用隔代组件中provide提供的函数 /*const doSubmitHandler inject(doSubmit,(){},false) const doRectHandler inject(doReset,(){},false) const submit () {//doSubmitHandler.call(null)//console.log(roleFormComponent.value.roleFormRef) } const reset () {//doRectHandler.call(null)//roleFormComponent.value.resetForm() }*//* 2. 使用defineEmits函数调用父组件的方法 const emits defineEmits([doSubmit, doReset, doClose]); const submit () {emits(doSubmit) } const reset () {emits(doReset) } const close () {emits(doClose) } 2. 父组件中使用如下 FormButton doSubmittest doResetrest doCloseclose/FormButton 父组件中的三个方法如下 const test (){console.log(我是父组件提交方法1) }const rest (){console.log(我是父组件重置方法2) }const close (){console.log(我是父组件关闭方法3) }*//scriptstyle scoped langscss/style2. 子组件2 子组件2RoleFormComponent.vue templateel-formrefroleFormRef:modelruleForm:rulesruleslabel-width120pxclassdemo-ruleForm:sizeformSizestatus-iconel-form-item label角色编码 proproleCodeel-input v-modelruleForm.roleCode//el-form-itemel-form-itemel-button typeprimary clicksubmitForm(roleFormRef)Create/el-buttonel-button clickresetForm(roleFormRef)Reset/el-button/el-form-item/el-form /templatescript setup langts import {reactive, ref, defineExpose} from vue import type {FormInstance, FormRules} from element-plusconst formSize refstring(default) const roleFormRef refFormInstance()const submitForm async (formEl: FormInstance | undefined) {console.log(表单提交执行了。。。。)if (!formEl) returnawait formEl.validate((valid, fields) {if (valid) {console.log(submit!, {...ruleForm})} else {console.log(error submit!, fields)}}) } //暴露方法给父组件使用,然后同级(兄弟)组件借助父组件中某个子组件的ref进行方法调用 defineExpose({roleFormRef,submitForm }) /scriptstyle langscss scoped/style 2. 借助父组件实现子组件1与子组件2之间通信 子组件1与子组件2总各自通过defineExpose暴露属性或方法给父组件 然后借助父组件实现子组件1与子组件2之间通信 templateel-drawer v-modeldrawer :directiondirection :before-closehandleClose size50%template #headerh4{{ formTitle }}/h4/templatetemplate #default!--子组件1 RoleFormComponent--RoleFormComponent refroleFormComponent/RoleFormComponent/templatetemplate #footerdiv styleflex: auto;align-content: center;align-items: center!--子组件2:FormButton--FormButton doSubmitformButtSubmit doClosehandleClose/FormButton/div/template/el-drawer /templatescript setup langts import {ref, defineProps, watch, provide} from vue import {ElMessageBox} from element-plus import RoleFormComponent from /components/sys/drawer/RoleFormComponent.vue import FormButton from /components/public/FormButton.vue //定义props,父组件向子组件传值 const props defineProps{showDrawer: boolean }(); //显示抽屉默认false const drawer refboolean(false) const formTitle refstring(角色新增)watch(() (props.showDrawer), (newVal, oldVal) {console.log(newVal, oldVal)drawer.value newVal })//定义emit事件调用父组件的方法 const emit defineEmits([updateDrawerVisible])//借助父组件进行同级组件传值及方法调用,如FormButton组件调用RoleFormComponent组件中的formButtSubmit方法 const roleFormComponent ref() const formButtSubmit (){console.log(roleFormComponent.value.roleFormRef)//获取RoleFormComponent组件暴露的roleFormRef及调用submitForm方法roleFormComponent.value.submitForm(roleFormComponent.value.roleFormRef) }/scriptstyle langscss scoped/style
http://www.zqtcl.cn/news/914170/

相关文章:

  • 新品发布会ppt参考友山建站优化
  • 做网站云服务器装系统厦门网站建设哪家强
  • 网站建设顶呱呱东莞建设信息网官网
  • 化妆品网站下载企业宣传片报价明细
  • php建设网站怎么用网站建设忽悠
  • 网站软件app免费注册账号qq
  • 清河网站建设公司西安开发网站的公司
  • 怎么用自己的服务器做网站软件接口设计文档
  • 昆明做网站建设找谁郑州网站制作的公司哪家好
  • 天津seo网站推广如何做医美机构网站观察分析
  • 东莞网站到首页排名网站建设与设计主要是干什么的
  • 自己做网站要花钱吗个人网站可以做资讯吗
  • 做vr效果图的网站做小程序的公司有哪些比较好
  • 物流建设网站总结制作壁纸的软件
  • 自己电脑做主机怎么做网站培训公司排名
  • 网站seo优化排名qq空间wordpress搬家
  • 做二手元器件那个网站查价格元气森林网络营销策略分析
  • 优质网站建设是哪家17网站一起做网店不发货
  • 建设企业网银如何对账seo优化推广工程师
  • 广州制作外贸网站小说网站制作公司
  • 东莞南城网站建设价格注册深圳公司有什么好处
  • 做网站图片大小建个人网站要多少钱
  • 北京免费建网站seo网站关键词
  • 南宁网站制作公司dede网站建站教程
  • 辽宁省建设工程招标协会网站自建网站主题及策划
  • 石材做网站google建网站
  • 装配式建筑信息平台无忧seo博客
  • 做淘客网站用备案网络推广预算方案
  • 网站建设需不需要招标好网站欣赏
  • 怎样创建网站的代码此网站域名即将过期