Vue Router 路由跳转后页面不刷新怎么办?
我在用 Vue Router 做单页应用,从 /home 跳到 /detail?id=123 的时候,页面内容没变,必须手动刷新才加载新数据。明明路由变了,但组件好像复用了,生命周期钩子也没重新触发,这该怎么处理?
我试过在 watch 里监听 $route,但感觉写起来很麻烦。是不是应该用 beforeRouteUpdate?还是说我的路由配置有问题?
<template>
<div>{{ item.name }}</div>
</template>
<script>
export default {
data() {
return { item: {} }
},
created() {
this.fetchData()
},
methods: {
fetchData() {
// 根据 this.$route.query.id 请求数据
}
}
}
</script>
如果想更彻底地强制刷新整个组件,可以在 router-view 上加 key:
第一种方案应该能用了,组件内部监听变化就行。