2022-04-21 18:20:39 +08:00
|
|
|
<template>
|
|
|
|
<a v-if="isExternal(to)" :href="to" target="_blank" rel="noopener">
|
|
|
|
<slot />
|
|
|
|
</a>
|
|
|
|
<div v-else @click="push">
|
|
|
|
<slot />
|
|
|
|
</div>
|
|
|
|
</template>
|
|
|
|
|
|
|
|
<script lang="ts" setup>
|
2022-04-22 01:16:02 +08:00
|
|
|
import { isExternal } from "@/utils/validate"
|
|
|
|
import { useRouter } from "vue-router"
|
2022-04-21 18:20:39 +08:00
|
|
|
|
|
|
|
const props = defineProps({
|
|
|
|
to: {
|
|
|
|
type: String,
|
|
|
|
required: true
|
|
|
|
}
|
|
|
|
})
|
|
|
|
|
|
|
|
const router = useRouter()
|
|
|
|
const push = () => {
|
|
|
|
router.push(props.to).catch((err) => {
|
|
|
|
console.warn(err)
|
|
|
|
})
|
|
|
|
}
|
|
|
|
</script>
|