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

uni-app/vue项目如何封装全局消息提示组件

效果图:

第一步:封装组件和方法,采用插件式注册!

在项目目录下新建components文件夹,里面放两个文件,分别是index.vue和index.js.

index.vue:

<template><div class="toast" v-if="isShow">{{ message }}</div>
</template><script>
export default {name: 'AllToast',props: {isShow: {type: Boolean,required: true,default: false},message: {type: String,required: true,default: ''}},data() {return {};}
}
</script><style scoped>
.toast {position: fixed;top: 50%;left: 50%;transform: translate(-50%, -50%);z-index: 9999;width: 300rpx;height: 100rpx;background-color: red;display: flex;justify-content: center;align-items: center;color: #fff;border-radius: 10rpx;
}
</style>

index.js:

import Vue from 'vue'
import AllToast from './index.vue'const ToastConstructor = Vue.extend(AllToast)function showToast(message) {const instance = new ToastConstructor({el: document.createElement('view'),propsData: {isShow: true,message: message}})document.body.appendChild(instance.$el)setTimeout(() => {instance.isShow = falsedocument.body.removeChild(instance.$el)}, 3000) // 3秒后自动隐藏
}export default {install: function (vue) {vue.component('toast', AllToast)vue.prototype.$showToast = showToast}
}

第二步:全局挂载

在main.js中引入和使用

import App from './App'
import uView from '@/uni_modules/uview-ui'
// 引入全局组件
import Mycomponent from '@/components/index.js'// #ifndef VUE3
import Vue from 'vue'
Vue.use(uView)
// 挂载组件
Vue.use(Mycomponent)
import './uni.promisify.adaptor'
Vue.config.productionTip = false
App.mpType = 'app'
const app = new Vue({...App
})
app.$mount()
// 测试使用
Vue.prototype.$showToast('请求失败');
// #endif// #ifdef VUE3
import { createSSRApp } from 'vue'
export function createApp() {const app = createSSRApp(App)return {app}
}
// #endif

第三步:使用方法

vue页面使用

this.$showToast('我是全局组件菜鸡')

其他页面使用

//对于this指向不是vue的需要先引入vue
import Vue from 'vue'//然后调用原型方法
Vue.prototype.$showToast('请求失败');

同理 这个方法也适用于Vue项目不止是uni

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Java接口案例
  • HTML 标签简写和全称及其对应的中文说明和实例
  • SQL MySQL定时器/事件调度器(Event Scheduler)
  • Deepspeed : AttributeError: ‘DummyOptim‘ object has no attribute ‘step‘
  • (Windows环境)FFMPEG编译,包含编译x264以及x265
  • 7.深度学习概述
  • Java毕业设计 基于SSM vue图书管理系统小程序 微信小程序
  • Armbian 1panel面板工具箱中FTP服务无法正常启动的解决方法
  • C#中的MD5摘要算法与哈希算法
  • 赛蓝企业管理系统DownloadBuilder接口任意文件读取漏洞复现 [附POC]
  • TQSDRPI开发板教程:编译openwifi工程
  • OSPF实验
  • imx6ull/linux应用编程学习(16)emqx ,mqtt创建连接mqtt.fx
  • 全网最全AI绘画 StablDiffusion系列进阶篇-ControlNet插件介绍
  • java设计模式(十五)命令模式(Command Pattern)
  • [译]CSS 居中(Center)方法大合集
  • Angularjs之国际化
  • HTTP--网络协议分层,http历史(二)
  • js面向对象
  • JS正则表达式精简教程(JavaScript RegExp 对象)
  • Laravel5.4 Queues队列学习
  • oldjun 检测网站的经验
  • php的插入排序,通过双层for循环
  • Vue组件定义
  • 讲清楚之javascript作用域
  • 聊一聊前端的监控
  • 深入浅出webpack学习(1)--核心概念
  • 消息队列系列二(IOT中消息队列的应用)
  • 译米田引理
  • k8s使用glusterfs实现动态持久化存储
  • Semaphore
  • # 利刃出鞘_Tomcat 核心原理解析(八)-- Tomcat 集群
  • #微信小程序(布局、渲染层基础知识)
  • (+4)2.2UML建模图
  • (4)事件处理——(7)简单事件(Simple events)
  • (C++17) std算法之执行策略 execution
  • (Java入门)抽象类,接口,内部类
  • (Windows环境)FFMPEG编译,包含编译x264以及x265
  • (八)Spring源码解析:Spring MVC
  • (源码版)2024美国大学生数学建模E题财产保险的可持续模型详解思路+具体代码季节性时序预测SARIMA天气预测建模
  • .Net 4.0并行库实用性演练
  • .NET Compact Framework 多线程环境下的UI异步刷新
  • .NET Core实战项目之CMS 第一章 入门篇-开篇及总体规划
  • .Net MVC + EF搭建学生管理系统
  • .net 调用海康SDK以及常见的坑解释
  • .Net 基于.Net8开发的一个Asp.Net Core Webapi小型易用框架
  • .NET/C# 项目如何优雅地设置条件编译符号?
  • .sh文件怎么运行_创建优化的Go镜像文件以及踩过的坑
  • :如何用SQL脚本保存存储过程返回的结果集
  • ?.的用法
  • @cacheable 是否缓存成功_让我们来学习学习SpringCache分布式缓存,为什么用?
  • @NotNull、@NotEmpty 和 @NotBlank 区别
  • [ solr入门 ] - 利用solrJ进行检索
  • [2024-06]-[大模型]-[Ollama] 0-相关命令
  • [AIGC] SpringBoot的自动配置解析