Vuetify + Vue3 全局提示组件

2025-04-12 04:00:27 5

环境

"dependencies": {
    "mitt": "^3.0.1",
    "vue": "^3.5.13",
    "vuetify": "^3.8.0"
}


hooks/msg.js

import mitt from "mitt";

const msgEmitter = mitt();

const onEvent = (callback: (msg: string) => void) => {
  msgEmitter.on("msg", (value: any) => {
    callback(value);
  });
};

const showMsg = (msg: string) => {
  msgEmitter.emit("msg", msg);
};

export function useMsg() {
  return { onEvent, showMsg };
}

App.vue

引入消息条, 设置持续时间2000ms, 可手动关闭, 位置在页面顶部

<v-snackbar-queue
    timer="blue-grey-lighten-4"
    color="blue-grey-lighten-5"
    location="top"
    v-model="snackMessages"
    :timeout="2000"
    closable
    close-text="✖"
  >
  </v-snackbar-queue>

对应script

import { useMsg } from "@/hooks/msg";
let { onEvent } = useMsg();

const snackMessages = ref<string[]>([]);

const showMsg = (msg: string) => {
  snackMessages.value.push(msg);
};

onEvent(showMsg);



使用

import { useMsg } from "@/hooks/msg";
let { showMsg } = useMsg();

showMsg("验证码xxxx");


Vuetify + Vue3 全局提示组件

环境"dependencies": { "mitt": "^3.0.1", "vue": "^3.5.13", "vuetify": "^3.8.0" }hooks/msg.jsimport mitt from "mitt"; const msgEmitter = mi
2025-04-12
Vite项目打包文件模块分析 - rollup-plugin-visualizer

Vite项目打包文件模块分析 - rollup-plugin-visualizer

前端项目优化...npm install --save-dev rollup-plugin-visualizer import { visualizer } from "rollup-plugin-visualizer"; export default defineConfig({ plugi
2025-04-07

Vuetify按需引入组件

前端打包优化....配置插件npm install vite-plugin-vuetifyvite.config.jsimport { defineConfig } from 'vite' import vue from '@vitejs/plugin-vue' import vuetify fro
2025-04-07

Vuetify按需引入Material Design Icons

安装依赖npm install @mdi/js -D注册import { createApp } from "vue"; import { createPinia } from "pinia"; import App from "./App.vue"; import router from "./
2025-04-07

Vue Computed引起的页面卡死

前端出现了个bug当请求接口时, 前端就会卡死, 直接无响应. 控制台看到对应请求的Timing一直卡在Initial connection.将请求单独拿出来放到Postman中请求, 正常响应.通过控制台Network中请求的Initialor进行断点跟踪, 发现前端实际也是获取到了接口的响应.
2024-10-28

freemarker 时间显示不正常 设置时区

项目在本地开发的时候显示正常,部署上服务器就一直差8个小时,最后发现freemarker官方文档有这样的说明time_zone:时区的名称来显示并格式化时间。 默认情况下,使用JVM的时区。 也可以是 Java 时区 API 接受的值,或者 "JVM default" (从 FreeMarker 2
2020-03-28
IDEA 2019.1 xml 不高亮

IDEA 2019.1 xml 不高亮

前几天更新了idea后,发现xml里的代码都没有了高亮,变得跟记事本一个德性了打开setting ,搜索 File Types,找到xml项, 查看下方的匹配格式,果然没有xml,(idea真是厉害)点击右方的+,输入*.xml,点击ok,解决问题
2020-03-28

npm install 淘宝镜像

npm install --registry=https://registry.npm.taobao.org
2020-03-28
Java中方法的参数传递机制

Java中方法的参数传递机制

来看一段代码 public class Man { private String name; private Integer age; public String getName() { return name; } publi
2020-03-28
基于自定义注解手写权限控制

基于自定义注解手写权限控制

方法一: AOP 方法二: 拦截器项目结构项目依赖<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-w
2020-03-28

Docker 部署 详细全过程 附代码

Docker 部署本站 全过程环境:CentOS7.61. 安装Docker其他版本CentOS可以参考这个https://help.aliyun.com/document_detail/187598.html查看本机内核版本,内核版本需高于 3.10uname -r 确保 yum 包最新yum u
2020-03-28

SpringBoot 启动普通java工程

引入依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> <version>2.0.9</version> </dependency>
2020-03-28

Vue.js DOM操作

<template> <input type="button" @click="reply($event)" value="回复"> </template> export default { methods: { replyFun(e) {
2020-03-29
CentOS7编译调试OpenJDK12

CentOS7编译调试OpenJDK12

1. 下载源码https://hg.openjdk.java.net/jdk/jdk12点击左侧的browse,再点击zip,就可以下载zip格式的源码压缩包。unzip xxx.zip 解压文件2. 安装jdkyum install java-11-openjdk-devel -y3. 运行con
2020-04-23
编写自己的Spring Boot Starter

编写自己的Spring Boot Starter

1.新建一个maven项目命名规则统一是xxx-spring-boot-starter完整pom.xml<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0"
2020-06-29