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

网站改版 建设方案广州网站公司推广建设

网站改版 建设方案,广州网站公司推广建设,个人开店的电商平台,怎么做wood网站教程全局动态组件uniapp(vue) 在我们很多项目中,我们需要创建一个组件,使其他在所有的路由页都存在,比如手机上的悬浮在屏幕上的圆形快捷按钮,那么我们就需要创建一个全局组件。 创建组件时我们所考虑的主要是两个点,一个…

全局动态组件uniapp(vue)

在我们很多项目中,我们需要创建一个组件,使其他在所有的路由页都存在,比如手机上的悬浮在屏幕上的圆形快捷按钮,那么我们就需要创建一个全局组件。
创建组件时我们所考虑的主要是两个点,一个是组件的创建和销毁,第二个是组件的通信。

1.组件的创建和销毁uniapp(vue)

使用 Vue.extend() 来扩展组件构造器,并手动挂载,目前有一个组件MzFloatingBox,直接调用createCustomerService就可以实现组件创建。

import MzFloatingBox from './components/MzFloatingBox.vue';
export function createCustomerService() {// 扩展 MzFloatingBox 组件构造器const CustomerServiceConstructor = Vue.extend(MzFloatingBox);// 创建组件实例const instance = new CustomerServiceConstructor();// 手动挂载到一个新的 div 元素上instance.$mount();// 将组件的 DOM 元素添加到页面上document.body.appendChild(instance.$el);// 返回组件实例(可以操作组件中的方法或数据)return instance;
}

组件销毁时,使用组件实例的 $destroy() 方法,然后移除组件的 DOM 元素。

export function destroyCustomerService(instance) {instance.$destroy();  // 销毁组件实例document.body.removeChild(instance.$el);  // 移除 DOM 元素
}

如果当前版本为vue3版本的话,那么需要使用createApp()来创建组件实例,并且需要使用unmount()方法来销毁组件实例。

  import { createApp } from 'vue';import MzFloatingBox from './components/MzFloatingBox.vue';export function createCustomerService() {const app = createApp(MzFloatingBox); // 创建 Vue 实例const instance = app.mount(document.createElement('div')); // 挂载到一个新的 DOM 元素上document.body.appendChild(instance.$el); // 将挂载后的 DOM 添加到页面上// 可以通过 instance 调用组件中的方法或数据return instance; }

销毁功能同上一样。

2.组件的通信uniapp

如果在uniapp中时,可以直接使用uni.eventBus来实现组件的通信,但是需要注意的是,在uniapp中,eventBus是一个全局变量,所以不需要在组件中引入,直接使用即可. 详细文档请点击传送门查看,具体代码如下:

// 触发自定义事件
uni.$emit('mzFloatingBox', true)
// 监听自定义事件
uni.$on('mzFloatingBox', data => {// do something
})
// 销毁自定义事件
uni.$off('mzFloatingBox', callback)

如果在vue中(vue2和vue3都支持),可以使用mitt来作为事件总线,具体可点击传送门查看,具体代码如下:

  1. 安装mitt
  npm install mitt
  1. 创建一个 eventBus.js 来封装 mitt 的功能
 // src/eventBus.jsimport mitt from 'mitt';const eventBus = mitt();export default eventBus;
  1. 在组件中使用 EventBus
    发送事件(emit)
  // 组件1: 发送事件<template><button @click="sendEvent">发送事件</button></template><script>import eventBus from '@/eventBus';export default {name: 'Component1',methods: {sendEvent() {eventBus.emit('customEvent', 'Hello from Component1');}}}</script>
监听事件(on)
  // 组件2: 监听事件<template><div>{{ message }}</div></template><script>import { onMounted, ref, onUnmounted } from 'vue';import eventBus from '@/eventBus';export default {name: 'Component2',setup() {const message = ref('');const handleEvent = (msg) => {message.value = msg;};onMounted(() => {eventBus.on('customEvent', handleEvent);});onUnmounted(() => {eventBus.off('customEvent', handleEvent);});return {message};}}</script>
  • eventBus.emit(‘customEvent’, data):在组件 1 中,发送一个名为 customEvent 的事件,并传递数据(如 “Hello from Component1”)。
  • eventBus.on(‘customEvent’, handler):在组件 2 中,监听 customEvent 事件并接收数据,通过 handler 函数来处理。
  • eventBus.off(‘customEvent’, handler):在组件销毁时,取消事件监听,防止内存泄漏。
  • 除了 mitt,你还可以使用 Vuex 或 provide/inject 等官方推荐的方式来进行跨组件通信.但是provide/inject局限于父子/爷孙组件通信
http://www.dtcms.com/wzjs/840801.html

相关文章:

  • 网站优化 seo和semgta5房产网站正在建设
  • 淘宝客 网站无备案扬州百姓网免费发布信息网
  • 公司做网站需要科技守护者
  • 哪个网站可以做艺术字推荐做素菜的网站
  • 辽宁海星建设集团有限公司网站四川省城乡住房和城乡建设厅网站首页
  • sqlite3做网站数据库建筑网上招工平台哪个好
  • 网站后台管理模板下载淘宝客网站一定要备案吗
  • 免费ftp网站wordpress过期
  • 网站被人抄袭怎么办不良网站进入窗口软件下载7
  • 如何 套用模板做网站专门做环保设备的网站
  • 程序员做网站类网站手机网站移动应用
  • wordpress改网站地址木模板价格
  • IT男做网站福建省建设监理网官方网站
  • 建设新农村网站东莞十大企业
  • 南通市建设局网站马建明上海做网站哪家公司
  • 引领网站温州做网站公司哪家好
  • 做个简单网站大概多少钱生成短链接
  • 英文网站建设服务合同模板下载厦门专业做网站的公司
  • 网站建设十一要点宿迁seo
  • 漳州做网站的公司噼里啪啦动漫在线观看免费
  • 个体工商户是否能够做网站即墨网站建设
  • 广州顺德网站设计网站备案 固定电话
  • 亲子网 网站正在建设中wordpress生成海报图片
  • 网站推广有哪些方案广州app开发定制公司
  • 网站主题和风格龙网网络推广软件
  • 襄阳网站建设开发请多记几个本站域名防止失联
  • 访问国外的网站服务器无法访问线上推广员是做什么的
  • wordpress多站点demo怎样让百度快速收录网站
  • 福建省建设干部培训中心网站首页正规seo需要多少钱
  • 网站建设摊销方法深圳一医疗公司给员工放假10个月