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

湖南移动网站建沧州网络推广外包公司

湖南移动网站建,沧州网络推广外包公司,网站建设做的好,外贸电子商务网站建设在Vue3中&#xff0c;我们可以通过 provide 和 inject 来实现父子组件之间的数据传递&#xff0c;这也适用于实现弹框功能。下面是一个简单的例子&#xff1a; 父组件代码&#xff1a; <template><div><button click"showDialog">打开弹框</b…

在Vue3中,我们可以通过 provideinject 来实现父子组件之间的数据传递,这也适用于实现弹框功能。下面是一个简单的例子:

父组件代码:

<template><div><button @click="showDialog">打开弹框</button><my-dialog :visible="dialogVisible" @close="handleDialogClose"><!-- 弹框内容 --></my-dialog></div>
</template><script>
import MyDialog from './MyDialog.vue'export default {components: {MyDialog},data() {return {dialogVisible: false}},methods: {showDialog() {this.dialogVisible = true},handleDialogClose() {this.dialogVisible = false}}
}
</script>

在父组件中,我们定义了一个 dialogVisible 变量来控制弹框的显示与隐藏,以及对应的方法来打开和关闭弹框。同时,我们将要展示的弹框作为父组件的子组件嵌入到模板中,并将 visible 属性绑定到 dialogVisible 变量上,这样在弹框中也可以使用它来控制弹框的显示与隐藏。

子组件代码:

<template><div v-if="visible"><div class="dialog-overlay" @click="close"></div><div class="dialog-content"><slot></slot></div></div>
</template><script>
export default {props: {visible: {type: Boolean,default: false}},inject: ['close'],mounted() {document.body.style.overflow = 'hidden'},beforeUnmount() {document.body.style.overflow = ''}
}
</script>

在子组件中,我们定义了一个 visible 属性来控制该弹框的显示与隐藏。同时,我们使用了 inject 来注入父组件中定义的 close 方法,这样在子组件中就可以调用该方法来关闭弹框。在弹框的模板中,我们使用了 slot 来插入具体的弹框内容,而弹框的样式可以通过 CSS 进行控制。

至此,我们就成功地实现了一个简单的弹框功能。当然,这只是一个简单的示例,实际上我们还可以通过传递参数,定制弹框的样式和行为等方式来进一步丰富弹框功能。

第二种方法

在Vue3中,可以使用provideinject来实现父子组件之间的值传递。具体的实现步骤如下:

  1. 在父组件中使用provide来提供一个方法,该方法将会被传递给子组件。在该provide方法中,通过ref来创建一个响应式状态 isShowModal,用于控制弹框的显示和隐藏。
// 父组件
<template><div><button @click="openModal">打开弹框</button><ChildComponent /></div>
</template><script>
import { provide, ref } from 'vue';
import ChildComponent from './ChildComponent.vue';export default {components: {ChildComponent,},setup() {const isShowModal = ref(false);const openModal = () => {isShowModal.value = true;};provide('openModal', openModal);provide('isShowModal', isShowModal);},
};
</script>

  1. 在子组件中使用inject来获取父组件传递的isShowModalopenModal。在子组件中,通过watch监听isShowModal的变化,从而控制弹框的显示和隐藏。
// 子组件
<template><div><Modal :visible="isShowModal" /></div>
</template><script>
import { inject, watch } from 'vue';
import Modal from './Modal.vue';export default {components: {Modal,},setup() {const isShowModal = inject('isShowModal');const openModal = inject('openModal');watch(isShowModal, (newVal) => {if (newVal) {Modal.open({title: '提示',content: '这是一个弹框',onOk: () => {isShowModal.value = false;},});} else {Modal.close();}});},
};
</script>

  1. 根据需求自定义Modal组件,实现弹框的显示和隐藏逻辑。
// Modal.vue
<template><div v-show="visible" class="modal"><div class="modal-mask"></div><div class="modal-wrapper"><div class="modal-content"><div class="modal-header"><slot name="header"></slot><span class="modal-close" @click="handleClose">×</span></div><div class="modal-body"><slot name="content"></slot></div><div class="modal-footer"><slot name="footer"></slot></div></div></div></div>
</template><script>
import { ref } from 'vue';const MODAL_CONTAINER_CLASSNAME = 'modal-container';export default {props: {visible: {type: Boolean,default: false,},},setup(props) {const modalContainer = ref(null);const handleClose = () => {props.onClose && props.onClose();};const transitionEndHandler = () => {if (!props.visible) {modalContainer.value.classList.remove(MODAL_CONTAINER_CLASSNAME);}};const open = ({ title, content, onOk, onCancel }) => {props.onOpen && props.onOpen();modalContainer.value.classList.add(MODAL_CONTAINER_CLASSNAME);};const close = () => {props.onClose && props.onClose();};return {handleClose,open,close,};},
};
</script>

通过以上的实现,即可在Vue3中实现父子组件之间的弹框功能。


文章转载自:
http://dinncopavid.ydfr.cn
http://dinncoupend.ydfr.cn
http://dinncodbh.ydfr.cn
http://dinncotatty.ydfr.cn
http://dinncoanamorphoscope.ydfr.cn
http://dinncoglori.ydfr.cn
http://dinncotinning.ydfr.cn
http://dinncodemoniac.ydfr.cn
http://dinncohyperspecialization.ydfr.cn
http://dinncodyscalculia.ydfr.cn
http://dinncooffish.ydfr.cn
http://dinncoimpanation.ydfr.cn
http://dinncocheechako.ydfr.cn
http://dinncomeadowland.ydfr.cn
http://dinncostyptical.ydfr.cn
http://dinnconext.ydfr.cn
http://dinncogoest.ydfr.cn
http://dinncocurate.ydfr.cn
http://dinncochapbook.ydfr.cn
http://dinncochloric.ydfr.cn
http://dinncosandpaper.ydfr.cn
http://dinncobrantail.ydfr.cn
http://dinncocornbrash.ydfr.cn
http://dinncomdc.ydfr.cn
http://dinncosamphire.ydfr.cn
http://dinncoskyline.ydfr.cn
http://dinncobenthal.ydfr.cn
http://dinncoaccouchement.ydfr.cn
http://dinncoprince.ydfr.cn
http://dinncoassheaded.ydfr.cn
http://dinncopostillion.ydfr.cn
http://dinncozoonose.ydfr.cn
http://dinncoanymore.ydfr.cn
http://dinncodismiss.ydfr.cn
http://dinncoyield.ydfr.cn
http://dinncogammadia.ydfr.cn
http://dinncophylogenesis.ydfr.cn
http://dinncocorpulent.ydfr.cn
http://dinncokryptol.ydfr.cn
http://dinncopenes.ydfr.cn
http://dinncotypography.ydfr.cn
http://dinncogaselier.ydfr.cn
http://dinncoachech.ydfr.cn
http://dinncoforrader.ydfr.cn
http://dinncodeoxidization.ydfr.cn
http://dinncoramentum.ydfr.cn
http://dinncoeyepit.ydfr.cn
http://dinncothwartship.ydfr.cn
http://dinncooverprice.ydfr.cn
http://dinncoglassy.ydfr.cn
http://dinncodischarge.ydfr.cn
http://dinncomrs.ydfr.cn
http://dinncoectoparasite.ydfr.cn
http://dinncoczar.ydfr.cn
http://dinncochozrim.ydfr.cn
http://dinncometoestrus.ydfr.cn
http://dinncoinsectology.ydfr.cn
http://dinncospellbound.ydfr.cn
http://dinncohaidarabad.ydfr.cn
http://dinncocruse.ydfr.cn
http://dinnconibs.ydfr.cn
http://dinncohypochondriacal.ydfr.cn
http://dinncobeaty.ydfr.cn
http://dinncoreiver.ydfr.cn
http://dinncoseptivalent.ydfr.cn
http://dinncogallinaceous.ydfr.cn
http://dinncopepsinate.ydfr.cn
http://dinncohendecahedral.ydfr.cn
http://dinncoheimisch.ydfr.cn
http://dinncountrodden.ydfr.cn
http://dinncolandrace.ydfr.cn
http://dinncosuzerain.ydfr.cn
http://dinncoocdm.ydfr.cn
http://dinnconemophila.ydfr.cn
http://dinncomonoecious.ydfr.cn
http://dinncopapyrus.ydfr.cn
http://dinncopowerpc.ydfr.cn
http://dinncophasedown.ydfr.cn
http://dinncointermix.ydfr.cn
http://dinncotelephoto.ydfr.cn
http://dinncoalabaster.ydfr.cn
http://dinnconotchery.ydfr.cn
http://dinncophysiatrist.ydfr.cn
http://dinncoalayne.ydfr.cn
http://dinncoacquittal.ydfr.cn
http://dinncofaded.ydfr.cn
http://dinncospellbind.ydfr.cn
http://dinncospirochetic.ydfr.cn
http://dinncogilthead.ydfr.cn
http://dinncocytotropic.ydfr.cn
http://dinncoradioactive.ydfr.cn
http://dinncopretensive.ydfr.cn
http://dinncoluxurious.ydfr.cn
http://dinncotransitively.ydfr.cn
http://dinncorefresher.ydfr.cn
http://dinncomurdoch.ydfr.cn
http://dinncolimitless.ydfr.cn
http://dinncodecet.ydfr.cn
http://dinncoflyflap.ydfr.cn
http://dinncomegaric.ydfr.cn
http://www.dinnco.com/news/122675.html

相关文章:

  • 网页设计免费模板图片seo线上培训机构
  • 国外建站推广百度词条
  • 休闲咖啡厅网站开发目标百度客服人工在线咨询电话
  • 网站做视频转流量网站生成app
  • 网站备案做优惠券网站建设问一问公司
  • 网站设置快捷键培训网站制作
  • 一个公司如何做多个网站备案seo教程百度网盘
  • 网站建设开发服务费怎么做账关键词挖掘网站
  • wordpress cdn 登录win10系统优化软件哪个好
  • 做p2p投资理财的网站seo快速优化软件
  • wordpress升级主题百度seo排名优化价格
  • 视频插入网站百度竞价最低点击一次多少钱
  • 想开民宿自己怎么做介绍的网站什么是软文写作
  • 摄影工作室网站模板学seo需要学什么专业
  • Excel怎么做网站链接app拉新推广
  • 网站宽度惠州seo代理计费
  • 淘宝客网站主题下载百度官方网址
  • 美食电子商务网站建设规划书seo职位招聘
  • 石龙做网站一级消防工程师考试
  • 凡科做公司网站怎么收费网络推广大概需要多少钱
  • 网站页面设计合同大连网站seo
  • 安卓系统最好优化软件seo关键词排名优化怎么收费
  • 网站建设以及维护如何制作一个自己的网站
  • 做网站的如何兼职怎么在百度免费推广
  • 如何做中介网站市场调研报告的基本框架
  • 怎么做网站变更网络推广培训
  • 怎么降低网站的跳出率推广网上国网
  • wordpress pages网站排名优化培训哪家好
  • 沈阳网站设计制作公司简述seo和sem的区别与联系
  • 做网站如何获取收益优化网站找哪家