Vue.prototype.$Jmessage.loading('登录已过期,正在重新登陆', 0);转化为vue3
时间: 2024-09-15 14:06:18 浏览: 37
浅谈Vue.use到底是什么鬼
在Vue 3中,由于不再直接操作`Vue.prototype`,你需要通过组件内的自定义选项或注入到组件的setup函数中来访问类似的功能。假设你有一个全局的`$LoadingService`,你可以这样做:
```javascript
// 在你的Vue实例或某个配置文件中创建$LoadingService
import { ref } from 'vue';
const $loading = ref(false);
export const useLoading = () => ({ loading: $loading });
// 或者在一个插件中提供
export default {
install(app) {
app.config.globalProperties.$loading = ref(false);
// ...其他功能...
}
};
// 在你的组件中使用
import { useLoading } from '@/services/loading.service';
export default {
setup() {
const { loading } = useLoading();
function setLoading(text, duration) {
loading.value = true;
setTimeout(() => {
loading.value = false;
}, duration || 0);
// 调用加载提示
this.$jmessage?.loading(text, duration);
}
return {
setLoading,
};
},
};
```
然后在组件内,你可以像下面这样调用加载提示:
```html
<template>
<div v-if="loading">登录已过期,正在重新登录...</div>
</template>
<script>
import { onMounted } from 'vue';
import { setLoading } from './useLoading'; // 或者从你的实际路径导入
export default {
setup() {
onMounted(() => {
setLoading('登录已过期,正在重新登陆', 0);
});
// ...
},
};
</script>
```
阅读全文