我希望在单击链接时刷新“SPA”,而不是您看到最少组件替换的默认行为。
听起来我正在扼杀 SPA 最好的部分,但我觉得没有刷新的链接带来的麻烦多于好处 - 我认为最糟糕的是,如果您单击当前的链接,页面不会明显响应页面,我认为这相当令人困惑:
<!-- You click, then of course nothing happens when you're at HelloWorld -->
<router-link :to="{name: 'HelloWorld'}">link</router-link>
好吧,我不知道普通的
<a>
标签可以按照我的预期工作如果使用历史模式,所以我最终这样做了:
<a :href="$router.resolve({name: 'HelloWorld'}).href">link</a>
或者也许只是:
<a href="/">link</a>
谢谢 akai,当我想使用相同的组件时,我会使用你的帮助。我有一个类别列表,当我单击某个类别页面时需要重新加载。
<a :href="$router.resolve({name:'category', params: {id: category.id}}).href">
{{category.name}}
<span>({{category.posts.length}})</span>
</a>
<router-link :to="{name: 'HelloWorldPage'} @click="reloadPageWhenRouteTheSame('HelloWorldPage')">link</router-link>
<script setup>
import router from '@/router'
const reloadPageWhenRouteTheSame = (routeName) => {
if (router.currentRoute.value.name === routeName) {
router.go()
}
}
</script>