ant design vue中的全局提示(message)在js、ts中使用

错误方式1:采用provide、inject

//main.ts
import { message } from 'ant-design-vue'

app.provide('message', message);

//route/index.ts
import { MessageInstance } from "ant-design-vue/es/message";
import { message } from 'ant-design-vue'
router.beforeEach((to, from, next) => {
  const message: MessageInstance = inject('message') as MessageInstance;
  if (to.path == '/login') {
    next()
  } else {
    //其他逻辑
    message.info('登录过期,请重新登陆')
  }
})

在某些情况中控制台会报警告,无法注入。

错误方式2:app中挂载message

//main.ts
const app = createApp(App);
app.config.globalProperties.$message = message;

//request.ts
import {  getCurrentInstance } from 'vue';

client.interceptors.request.use((config: InternalAxiosRequestConfig<any>) => {
  const isToken = (config.headers || {}).isToken
  if (Cookies.get('accessToken') && isToken) {
    config.headers['Authorization'] = Cookies.get('accessToken')
  }
  return config;
}, (error) => {
  // 对请求错误做些什么
  const { proxy } = getCurrentInstance();
  //报错了………………
  return Promise.reject(error);
});

报错——getCurrentInstance is null

正确方式:

//App.vue
import { message } from 'ant-design-vue';
window.$message = message  //window上挂载

//ts申明window $message属性
declare global {
  interface Window {
    $message: MessageApi
  }
}

//任何地方
window.$message.success('')
window.$message.error('')

  • 13
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

你熬夜了吗?

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值