onMounted(() => {
window.addEventListener('message', async (event: MessageEvent) => {
if (event.data.token !== '' && event.data.status === true) {
const res = await post(api.user.login, {
id_token: event.data.token
})
if (res.status === 200) {
localStorage.userInfo = JSON.stringify(res.data.data)
ElMessage.success('登录成功')
const { href } = this.$router.resolve({
path: "/home",
})
window.location.href = href
} else {
ElMessage.error('登录失败')
}
}
})
})
将 router 改为 this.$router 即可,因为在 Vue 应用中,$router
已经被添加到了每个组件的实例上,可以通过 this.$router
来访问路由实例。
在 <script setup>
中,this
上下文不可用,可以使用 useRouter
钩子来获取路由实例
import { useRouter } from 'vue-router'
const router = useRouter()
useRouter
只能在 setup
函数中使用,router可以在任何组件中使用