918 B
918 B
title, createTime, tags
| title | createTime | tags | |
|---|---|---|---|
| 不使用vue-router实现简单路由跳转 | 2022/05/29 23:40:45 |
|
官方给的是 vue2+js 的写法,用 vue3+ts 简单改一下:
<script setup lang="ts">
import { computed, reactive } from 'vue'
import Gadget from './views/Gadget.vue'
import HelloWorld from './views/HelloWorld.vue'
const data: any = reactive({
currentPath: window.location.pathname,
routes: {
'/': HelloWorld,
'/Gadget': Gadget,
},
})
window.addEventListener('hashchange', () => {
data.currentPath = window.location.hash
})
const currentView = computed(() => {
return data.routes[data.currentPath.slice(1) || '/'] || HelloWorld
})
</script>
<template>
<a href="./">Home</a> | <a href="#/Gadget">Gadget</a> |
<component :is="currentView" />
</template>