Vue.js 动态组件重新加载
Vue.js dynamic component reload
我有一个 vue.js 应用程序,我在其中使用 component
标签和 :is="currentView"
方法来更改活动视图。我有一个 "state machine",它根据某些业务逻辑跟踪从一个组件到另一个组件的有效转换。有时这会告诉 vue 实例 currentView
的新值与旧值相同。如果发生这种情况,组件将不会被重新加载。即使视图相同,有什么方法可以强制组件重新加载?那就是我想要重新加载数据,并执行生命周期挂钩。
这似乎可以解决问题,但是它会导致视图闪烁,有什么办法可以避免这种情况吗?
const oldView = this.currentView
this.currentView = engine.advance()
if(this.currentView == oldView) {
//force reload!
this.currentView = ''
this.$nextTick(function () {
this.currentView = oldView
})
}
您可以向组件定义添加一个独特的 key
属性,以便它正确触发所有组件生命周期方法。
您的组件定义应如下所示:
<component :is="view" :key="unique_key"></component>
有用的链接:
我有一个 vue.js 应用程序,我在其中使用 component
标签和 :is="currentView"
方法来更改活动视图。我有一个 "state machine",它根据某些业务逻辑跟踪从一个组件到另一个组件的有效转换。有时这会告诉 vue 实例 currentView
的新值与旧值相同。如果发生这种情况,组件将不会被重新加载。即使视图相同,有什么方法可以强制组件重新加载?那就是我想要重新加载数据,并执行生命周期挂钩。
这似乎可以解决问题,但是它会导致视图闪烁,有什么办法可以避免这种情况吗?
const oldView = this.currentView
this.currentView = engine.advance()
if(this.currentView == oldView) {
//force reload!
this.currentView = ''
this.$nextTick(function () {
this.currentView = oldView
})
}
您可以向组件定义添加一个独特的 key
属性,以便它正确触发所有组件生命周期方法。
您的组件定义应如下所示:
<component :is="view" :key="unique_key"></component>
有用的链接: