【发布时间】:2022-12-03 12:45:05
【问题描述】:
我正在学习 Vue 3,在 app.js 中使用 SweetAlert2 时遇到了一些麻烦。
当我在组件 Vue 中使用 SweetAlert2 但在 app.js 中不起作用时,一切正常并且有效
我的目标: 我想在收到未经身份验证的错误响应时显示带有确认按钮的警报。从 axios 拦截器并将用户重定向到登录页面
应用程序.js
import {createApp} from 'vue'
require('./bootstrap')
import App from './App.vue'
import axios from 'axios'
import router from './router'
import store from './store'
// SweetAlert2
import VueSweetalert2 from 'vue-sweetalert2';
import 'sweetalert2/dist/sweetalert2.min.css';
axios.interceptors.response.use(function (response) {
return response
}, function (error) {
console.log(error.response.data.message)
if (error.response.data.message === 'Unauthenticated.') {
swal({
title: "Session Expired",
text: "Your session has expired. Would you like to be redirected to the login page?",
icon: "warning",
showCancelButton: true,
confirmButtonColor: "#DD6B55",
confirmButtonText: "Yes",
closeOnConfirm: false
}).then((result) => {
if (result.value) {
window.location.href = "/login"
}
});
}
return Promise.reject(error)
})
const app = createApp(App)
app.config.globalProperties.$axios = axios;
app.use(router)
app.use(VueSweetalert2)
app.use(store)
app.mount('#app')
当我用这个改变错误响应时它工作,(但对我来说不是这样优雅)
...
axios.interceptors.response.use(function (response) {
return response
}, function (error) {
console.log(error.response.data.message)
if (error.response.data.message === 'Unauthenticated.') {
alert('Session Expired');
window.location.href = "/login"
}
return Promise.reject(error)
})
...
我认为如果使用 sweetalert 会很好,
谢谢你...
【问题讨论】: