由于某种原因,在我的Vue应用程序中,当链接页面仅更改该段时,路由器出现问题。例如
我有以下链接
<router-link :to="{ path: '/tag/tag2' }">Tag 2</router-link>
<router-link :to="{ path: '/tag/tag3' }">Tag 3</router-link>
<router-link :to="{ path: '/category/cat1' }">Category 1</router-link>
由router
{
path: '/tag/:slug',
name: 'Tag',
component: () => import('./views/tag')
}
在views/tag.vue
内的加载时,会发出axios
请求以获取所有标签。类别等功能相同
可以说当前网址为http://test.com/tag/tag1
如果您单击Tag 2
的链接,则URL将会更改,但是没有其他反应。没有axios
个电话等
如果我单击Tag 3
,则URL将会更改,但是没有其他反应。没有axios
个电话等
如果我单击Category 1
,则URL会更改,页面会加载类别视图并触发其轴请求。
如果只有子弹在变化,为什么会有问题?
答案 0 :(得分:2)
我相信您的axios调用位于组件的生命周期挂钩之一(即beforeCreate
)中。问题在于,Vue Router会尽可能重用组件。在您的情况下,从/tag/tag1
到/tag/tag2
,唯一改变的是参数,因此它仍然是相同的组件,路由器不会再次创建它。
有两种解决方案:
beforeRouteUpdate
挂钩中,这意味着每次组件中的路线更改时,它们都会被触发。key
添加router-view
属性,这将使路由器重新创建每个组件。<router-view :key="$route.fullPath"></router-view>