vue3 + vite 按需引入vant(解决问题showFailToast样式不生效)

在基于 vite、webpack 或 vue-cli 的项目中使用 Vant 时,可以使用 unplugin-vue-components插件,它可以自动引入组件,并按需引入组件的样式。

目录

1.安装unplugin-vue-components

2.添加vite.config.js配置

3.main.js引入需要的组件

4.注意事项

1.安装unplugin-vue-components

npm i unplugin-vue-components -D

2.添加vite.config.js配置


import Components from 'unplugin-vue-components/vite';
import { VantResolver } from 'unplugin-vue-components/resolvers';
...
Components({
   resolvers: [VantResolver()],
}),

 完整代码

3.main.js引入需要的组件

从 vant 中单独导入所需组件import { ... } from 'vant'

通过 .use() 注册每个组件app.use(router) .use(Loading)

避免了引入不必要的组件和样式,有助于减少最终打包体积。

import { createApp } from 'vue'
import { createPinia } from 'pinia'
import { Loading, Dialog, Form, Field,Icon, Button, Toast } from 'vant'

import App from './App.vue'
import router from './router'
import 'lib-flexible/flexible'

import './assets/main.css'
const app = createApp(App)

app.use(createPinia())
app.use(router)
  .use(Loading)
  .use(Dialog)
  .use(Toast)
  .use(Form)
  .use(Field)
  .use(Icon)
  .use(Button)
app.mount('#app')

4.注意事项

函数式调用组件(如 Toast)可能不会自动引入样式,所以需要手动导入,这次遇到的问题是页面中使用showFailToast不生效,检查元素发现仅有van-toast的类名,但是没有相关样式

页面引入代码

import { showSuccessToast, showFailToast } from 'vant';
const onSubmit = (values) => { 
  showFailToast('测试错误')
}

 没有以弹窗形式弹出提示,只是在页面底部添加了文字元素如图

前提:引入方法没有问题

在main.js添加

import 'vant/es/toast/style'

原因:函数式调用组件(如 Toast)可能不会自动引入样式,所以需要手动导入,这是为了防止构建工具无法识别函数式组件的样式依赖。

解决撒花~

ViteVue3Vant4 的项目中,按引入组件并使用 Toast 提示信息不显示可能是由于几个原因导致的: 1. **未正确安装和配置 Vant**: 确保你已正确安装了 Vant 组件库,并按照官方文档将其配置到 Vue3 中。这通常要在 main.js 或 setup.ts 文件里导入和注册组件。 ```js import { createApp } from 'vue' import Vant from 'vant' import { Toast } from 'vant' Vant.use(Toast) const app = createApp(App) app.use(Vant) ... ``` 2. **按引入时的路径问题**: 如果你是通过 `import { Toast } from 'vant/toast'` 这样的方式按引入,确保路径设置正确,Vant 的 Toast 组件在按加载时可能不会自动生效,你要手动导入并实例化。 ```js // 在要的地方 import { Toast } from 'vant/toast' const toast = new Toast({ message: '这是提示信息', duration: 2000 // 持续时间 }) toast.show() ``` 3. **生命周期钩子问题**: 可能是你在合适的生命周期钩子(如 mounted 或 beforeCreate)中没有正确初始化 Toast。确保在要显示 Toast 时已经实例化了。 4. **组件状态管理**: 如果组件的状态管理使用了Vuex,检查是否在 store 中正确处理了 Toast 显示的动作。 5. **浏览器兼容性问题**: 确认目标浏览器是否支持 Vue3 的特性以及 Vant 的 Toast 功能,有些旧版本浏览器可能有兼容性问题。 如果以上都不是问题,可以尝试清理一下缓存,或者更新相关的依赖包看看是否有帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值