如何强制 Vue 在路由更改时销毁并重新创建组件?

Posted

技术标签:

【中文标题】如何强制 Vue 在路由更改时销毁并重新创建组件?【英文标题】:How to force Vue to destroy and re-create the component on route change? 【发布时间】:2021-02-17 07:16:59 【问题描述】:

我在 Vue 路由器中的路由:

 path: 'articles/create', component: () => import('Detail.vue') ,
 path: 'articles/:id/edit', component: () => import('Detail.vue') ,

如您所见,我在两条路由上渲染了相同的 Vue 组件 Detail.vue

我如何“强制”Vue 销毁并重新创建 Detail.vue 组件当 URL 更改例如从 /articles/5/edit/articles/create

【问题讨论】:

【参考方案1】:
<router-view :key="$route.fullPath" />

请注意,这只强制路由器销毁/创建组件,对路由器挂钩没有影响 - 例如,beforeEnter 挂钩不会被调用,即使目标组件被销毁并创建新组件...

【讨论】:

以上是关于如何强制 Vue 在路由更改时销毁并重新创建组件?的主要内容,如果未能解决你的问题,请参考以下文章

在vue中使用路由器更改视图时销毁我的计数器实例

React路由器参数更改时强制重新安装组件?

Nuxt:销毁并重新创建当前页面的组件而不刷新

Vue之重新渲染组件的正确方式

vue 强制刷新组件

变量更改时如何重新渲染 vue.js 组件