位置: IT常识 - 正文

Vite + Vue3 +Vant4构建项目时,按需引入使用Toast组件,引用 showToast 时出现编译报错的解决方案

发布时间:2024-01-06
Vite + Vue3 +Vant4构建项目时,按需引入使用Toast组件,引用 showToast 时出现编译报错的解决方案 Vite + Vue3 +Vant4构建项目时,按需引入使用Toast组件,引用 showToast 时出现编译报错的解决方案文章目录Vite + Vue3 +Vant4构建项目时,按需引入使用Toast组件,引用 showToast 时出现编译报错的解决方案一.问题定位二.以下为完整解决代码:局部引入Toast全局引入Toast一.问题定位

推荐整理分享Vite + Vue3 +Vant4构建项目时,按需引入使用Toast组件,引用 showToast 时出现编译报错的解决方案,希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!

在Vite + Vue3 +Vant4构建项目时,需要使用Toast组件显示提示信息,按照官方文档使用函数调用

/**函数调用*为了便于使用 Toast,Vant 提供了一系列辅助函数,通过辅助函数可以快速唤起全局的 Toast 组件。*比如使用 showToast 函数,调用后会直接在页面中渲染对应的轻提示。*/import { showToast } from 'vant';showToast('提示内容');

使用后直接报错,说是找不到对应的样式文件(如下图):

在项目中查找node-moudles文件,确实没有找到,只有一个toast文件(如下图):

在百度搜索解决方法,说是需要单独引入以下样式文件:

但是,引用完之后依然报错,不管用。

继续查看官方文档,发现在官方文档最下方的常见问题里有解决方法:

Vant 从 4.0 版本开始不再支持 babel-plugin-import 插件,请参考 迁移指南 移除该插件。

Vite + Vue3 +Vant4构建项目时,按需引入使用Toast组件,引用 showToast 时出现编译报错的解决方案

按照官方文档说明,移除 babel-plugin-import插件,结果在项目中根本没使用该插件,到此为止,问题依然没有解决。

后来经过仔细观察发现,在项目文件vite.config.js中按需引入vant4时使用到了 vite-plugin-style-import 这个插件,

此时的 name 参数 其实就是 引入vant 组件的大括号内的名称,对比报错截图

既然show-toast/style/index找不到,那不妨直接修改路径 ,改为 toast/style/index

resolveStyle: (name) => { if (name == 'show-toast') { return `../es/toast/style/index`; //修改vant show-toast引入路径 } else { return `../es/${name}/style/index`; //修改vant引入路径 } },

修改后果然不再报错,局部注册和全局注册均正常:

二.以下为完整解决代码:局部引入Toast

1.vite.config.js

import { defineConfig} from 'vite';import vue from '@vitejs/plugin-vue';import { resolve} from 'path'; //引入路径import styleImport, { VantResolve} from 'vite-plugin-style-import'; //按需引入插件// https://vitejs.dev/config/export default defineConfig({ plugins: [ vue(), styleImport({ resolves: [VantResolve()], //引入vant libs: [{ libraryName: "vant", esModule: true, resolveStyle: (name) => { if (name == 'show-toast') { return `../es/toast/style/index`; //修改vant引入路径 } else { return `../es/${name}/style/index`; //修改vant引入路径 } }, }], }), ],})

2.在使用组件的页面

<template> <div class="container" style="padding-top: 30px"> <div style="display: flex; justify-content: center"> <van-button type="primary" @click="showLocalToast" >显示局部toast消息</van-button > </div> </div></template><script setup>import { ref, getCurrentInstance, onMounted } from "vue";import { showToast } from "vant";//引入showToastconst showLocalToast = () => { showToast("我是局部toast消息");};</script>全局引入Toast

1.vite.config.js

import { defineConfig} from 'vite';import vue from '@vitejs/plugin-vue';import { resolve} from 'path'; //引入路径import styleImport, { VantResolve} from 'vite-plugin-style-import'; //按需引入插件// https://vitejs.dev/config/export default defineConfig({ plugins: [ vue(), styleImport({ resolves: [VantResolve()], //引入vant libs: [{ libraryName: "vant", esModule: true, resolveStyle: (name) => { if (name == 'show-toast') { return `../es/toast/style/index`; //修改vant引入路径 } else { return `../es/${name}/style/index`; //修改vant引入路径 } }, }], }), ],})

2.在main.js全局引入

import { createApp} from 'vue'import App from './App.vue'// 按需引入vant组件import { showToast,} from 'vant';const app = createApp(App);app.config.globalProperties.$toast = showToast; //全局使用showToast组件app.mount('#app')

3.在使用组件的页面

<template> <div class="container" style="padding-top: 30px"> <div style="display: flex; justify-content: center; margin-top: 50px"> <van-button type="success" @click="showGlobalToast" >显示全局toast消息</van-button > </div> </div></template><script setup>import { ref, getCurrentInstance, onMounted } from "vue";const instance = getCurrentInstance(); //获取当前实例对象const _this = instance.appContext.config.globalProperties; //vue3获取当前thisconst showGlobalToast = () => { _this.$toast("我是全局注册消息");};</script>
本文链接地址:https://www.jiuchutong.com/zhishi/287977.html 转载请保留说明!

上一篇:最早的笔记本是什么(最早的笔记本是512m内存)

下一篇:飞机上可以充电吗(上飞机可以带2个充电宝吗)

  • 小米4 win10(小米4 win10)(小米4装win10)

    小米4 win10(小米4 win10)(小米4装win10)

  • 苹果12输入法手写怎么设置(苹果12输入法手写设置在哪里)

    苹果12输入法手写怎么设置(苹果12输入法手写设置在哪里)

  • 软件如何拷贝到u盘(软件如何拷贝到u盘里)

    软件如何拷贝到u盘(软件如何拷贝到u盘里)

  • 淘宝抢东西被盾什么意思(淘宝抢购被盾了)

    淘宝抢东西被盾什么意思(淘宝抢购被盾了)

  • se2支持18w快充吗(se2是否支持18w快充)

    se2支持18w快充吗(se2是否支持18w快充)

  • 没有芯片华为怎么办(没有芯片华为怎么开机)

    没有芯片华为怎么办(没有芯片华为怎么开机)

  • 公众号迁移什么意思(公众号迁移什么时候可以注册原有名称)

    公众号迁移什么意思(公众号迁移什么时候可以注册原有名称)

  • 华为nova7pro没有耳机孔吗(华为nova7pro没有红外线怎么开空调)

    华为nova7pro没有耳机孔吗(华为nova7pro没有红外线怎么开空调)

  • ipadpencil充电多久(ipad pencil充多久满电)

    ipadpencil充电多久(ipad pencil充多久满电)

  • 国行和其他版本的区别(怎么区分国行和其他版本)

    国行和其他版本的区别(怎么区分国行和其他版本)

  • qq号很久没用会不会被注销(qq很久没用会变其他头像吗)

    qq号很久没用会不会被注销(qq很久没用会变其他头像吗)

  • 办理了5G套餐可以退订吗(办理5g套餐可以用4g吗)

    办理了5G套餐可以退订吗(办理5g套餐可以用4g吗)

  • 苹果7和8的手机壳共用(苹果7和8的手机壳可以一起用吗)

    苹果7和8的手机壳共用(苹果7和8的手机壳可以一起用吗)

  • 苹果1691可以用电信卡吗(iphone12支持160mhz频宽吗)

    苹果1691可以用电信卡吗(iphone12支持160mhz频宽吗)

  • 9100f用什么散热(9100f用什么散热器好)

    9100f用什么散热(9100f用什么散热器好)

  • 局域网的主要特点是(属于广域网的有哪些)

    局域网的主要特点是(属于广域网的有哪些)

  • 论文封面下划线怎么加(论文封面下划线消失)

    论文封面下划线怎么加(论文封面下划线消失)

  • klwtl00h华为什么型号(klwtl00华为什么型号)

    klwtl00h华为什么型号(klwtl00华为什么型号)

  • 京东差评如何删除评价

    京东差评如何删除评价

  • 手机如何设置语音唤醒(手机如何设置语音输入)

    手机如何设置语音唤醒(手机如何设置语音输入)

  • oppo手机显示hd怎么取消(oppo手机显示HD怎么设置)

    oppo手机显示hd怎么取消(oppo手机显示HD怎么设置)

  • 为什么隔空投送失败啊(为什么隔空投送找不到我)

    为什么隔空投送失败啊(为什么隔空投送找不到我)

  • 芒果tv怎么退出账号(芒果tv怎么退出电脑登录)

    芒果tv怎么退出账号(芒果tv怎么退出电脑登录)

  • 华为nova5pro耳机插口在哪(华为nova5pro耳机插上没有反应)

    华为nova5pro耳机插口在哪(华为nova5pro耳机插上没有反应)

  • 淘宝新店怎么做起来(淘宝新店怎么做活动)

    淘宝新店怎么做起来(淘宝新店怎么做活动)

  • 手机进水扬声器没声音(手机进水扬声器有杂音)

    手机进水扬声器没声音(手机进水扬声器有杂音)

  • 关闭通知横幅

    关闭通知横幅

  • 印花税缴纳方式一经选择1年之内不得修改
  • 营业税是什么意思 视频
  • 给员工发礼品发什么礼品最实惠
  • 递延收益属于利息收入吗
  • 专票如何开具
  • 免抵税额什么时候缴纳城建税
  • 工商局打印机读档案委托书
  • 事业单位私车公用条例
  • 研发加计扣除减免税
  • 备发职工工资属于什么会计科目
  • 待抵扣进项税额冲回
  • 费用退回现金如何入账
  • 购入商品入库
  • 公司的钱怎么转出来
  • 个人去税务局开居间费发票
  • 出口退税的城建税和教育费附加怎么算
  • 营改增前取得的不动产出售的计税方法
  • 处于汇总期
  • 增值税电子普通发票怎么下载
  • 员工承担补缴社保的责任
  • 插值法求利率计算公式
  • 外派人员计算个人所得税可否有附加扣除
  • 现金清查制度的内容包括
  • 1697510110
  • 其他应收款押金计提坏账吗
  • 用于非应税项目的购进货物或应税劳务
  • 华为nova10pro支持多少倍变焦
  • 代收代缴水电费商家不缴可以停电吗
  • 公司收入算认缴出资吗
  • 投资收益怎么做不影响利润
  • 结构性存款利息增值税
  • 视同销售的八种情况下会计分录怎么做?
  • 应收票据与应付票据的使用与哪种银行结算方式有关
  • rteng7.exe - rteng7是什么进程 有什么用
  • uniapp多端兼容
  • 圣胡安教会9个遗物视频
  • 资产处置损益和待处理财产损溢区别
  • 增值税的计税依据包括契税吗
  • vue get方法
  • cuda运行环境
  • 出口退税款的会计科目
  • php bi
  • 涉及产权的案例
  • 出让土地使用权和转让土地使用权的区别
  • php中自定义常量的函数是
  • 纳税人有什么义务
  • 固定资产的计提折旧在月初还是月末
  • python的顺序
  • 应交税费未交增值税
  • 跨年度的利息收入怎么做账
  • 会计中的一级科目是什么意思
  • 开源php 系统
  • centos 安装dpkg
  • mysql查询性能分析
  • 补交所得税会计处理方法包括
  • 库存股增加记哪一方
  • 工程完工后的质保金怎么入账
  • 广发银行的主营业务
  • 银行代扣水电
  • 公司费用报销单样本
  • 关于废止有关排污收费规章和规范性文件的决定
  • 汇票本票支票的联系
  • mysql5.6怎么用
  • centos的版本有哪些
  • win8如何更改账户名
  • task运行在哪个工作单元
  • win10用着怎么样
  • schedul2.exe - schedul2是什么进程 有什么用
  • korok是什么文件
  • win8电脑锁屏壁纸怎么设置方法
  • Win10 Mobile Build 14327上手视频评测
  • win10预览设置
  • dos批处理高级教程合编.pdf
  • Extjs中RowExpander控件的默认展开问题示例探讨
  • nodejs爬虫框架crawler
  • android 图像处理
  • 分享js粘帖屏幕怎么弄
  • Python运行报错此段代码无法访问
  • 国家级运动员怎么申请
  • 劳务报酬所得个人所得税计算方法
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号