Vue3 vant4 解决引入的Toast和dialog样式丢失的bug

情景再现:
正确做法:

import 'vant/es/toast/style'

import 'vant/es/dialog/style'

TypeScript 复制代码
import type { App } from 'vue'
import { showToast, type ToastOptions, closeToast, showDialog, type DialogOptions } from 'vant'
import 'vant/es/toast/style'
import 'vant/es/dialog/style'

// 全局消息提示
export const $toast = {
  text: (
    content: string,
    options: ToastOptions = {
      duration: 2000
    }
  ) =>
    showToast({
      message: content,
      ...options
    }),
  loading: (
    content: string,
    options: ToastOptions = {
      duration: 2000
    }
  ) =>
    showToast({
      message: content,
      type: 'loading',
      ...options
    }),
  success: (
    content: string,
    options: ToastOptions = {
      duration: 2000
    }
  ) =>
    showToast({
      message: content,
      type: 'success',
      ...options
    }),
  error: (
    content: string,
    options: ToastOptions = {
      duration: 2000
    }
  ) =>
    showToast({
      message: content,
      type: 'fail',
      ...options
    }),
  closeAll: () => {
    closeToast()
  }
}

// 全局确认框
export const $confirm = (content: string, options?: DialogOptions) => {
  return showDialog({
    title: options?.title || '提示',
    message: content,
    confirmButtonText: options?.confirmButtonText || '确定',
    cancelButtonText: options?.cancelButtonText || '取消',
    ...options
  })
}

// Vant 安装函数
export default function setupVant(app: App<Element>) {
  // 挂载到全局属性
  app.config.globalProperties.$toast = $toast
  app.config.globalProperties.$confirm = $confirm

  // 挂载到 window 对象,供其他模块使用
  if (typeof window !== 'undefined') {
    ;(window as any).$toast = $toast
    ;(window as any).$confirm = $confirm
  }

  // 提供给组合式 API 使用
  app.provide('$toast', $toast)
  app.provide('$confirm', $confirm)
}
效果如下
相关推荐
天下无贼!13 小时前
【功能实现】基于Vue3+TS实现大文件分片上传
开发语言·javascript·node.js·vue·html5
曲幽17 小时前
FastAPI + Vue 前后端分离实战:我的项目结构“避坑指南”
python·vue·fastapi·web·vite·proxy·cors·env
落魄江湖行17 小时前
入门篇四:Nuxt4布局系统:让页面框架复用变得简单
前端·vue·nuxt4
色空大师18 小时前
网站搭建实操(十)前端搭建
前端·webpack·vue·网站·论坛
.生产的驴3 天前
Vue3 超大字体font-slice按需分片加载,极速提升首屏速度, 中文分片加载方案,性能优化
前端·vue.js·windows·青少年编程·性能优化·vue·rescript
宁波阿成3 天前
族谱管理系统架构分析与亮点总结
java·系统架构·vue·ruoyi-vue·族谱
不想上班只想要钱4 天前
模板里 item.xxx 报错 ,报 item的类型为未知
前端·vue
一只小阿乐4 天前
js流式模式输出 函数模式使用
开发语言·javascript·ai·vue·agent·流式数据·node 服务
淡忘_cx4 天前
解决 Vite EACCES 权限错误:从报错到修复的完整指南
前端·vue