我使用 keep-alive 来缓存 Vue.js 应用程序中的一些页面,其中大多数页面运行良好。但是,对于一些使用延迟加载组件的页面,当我刷新时,页面会正常呈现...
我在 Vue.js 应用程序中使用 keep-alive 来缓存一些页面,其中大多数页面运行良好。但是,对于使用延迟加载组件的少数页面,当我刷新页面或首次打开时,页面会正常呈现。但当我切换到其他页面然后返回时,页面会变为空白。
该问题仅发生在第一个打开的页面上,而以相同方式导入的其他页面只要不是第一个打开的页面,都可以正常运行。
路由器视图.vue
<div>
<transition :name="transitionName">
<keep-alive :max="maxPageCache" :include="keepAlive">
<router-view :key="routerViewKey" />
</keep-alive>
</transition>
<div>
...
let keepAlive = ['a','b']
...
页面预览
<template>
<list-template v-if="xxx"/>
<something v-else />
</template>
import listTemplate from './list-template.vue'
...
name:'a',
components:{
'list-template': listTemplate,
'something': ()=>import('./something.vue')
}
...
列表-模板.vue
<template>
<list />
</template>
...
组件.js
...
Vue.component('List',()=>import('./list'))
...
我检查过:
-
componentInstance 被 keep-alive 缓存了,但是 this.$vnode.componentInstance.$el.--vue-- 为 null
-
激活和停用的钩子工作正常
-
键和名称是正确的
-
vue.js devtools:我可以看到延迟加载的组件道具和状态,但激活时没有渲染时间
-
没有错误
我发现,如果我删除路由视图的“key”,或者不使用延迟加载组件,或者用 div 包裹延迟加载组件,或者在延迟加载组件之前插入一些内容,那么所有页面都可以正常工作,问题就解决了。
但我不知道为什么会出现这个问题,以及为什么可以用这些方法解决。
在 Vue2 中使用 keep-alive 的惰性加载组件仅渲染一次
下载声明:
本站所有软件和资料均为软件作者提供或网友推荐发布而来,仅供学习和研究使用,不得用于任何商业用途。如本站不慎侵犯你的版权请联系我,我将及时处理,并撤下相关内容!