Subscribe on changes!

keepAlive组件中的instance在打包后添加__v_cache=内部cache map,或者管理内部cache map方法

avatar
Dec 28th 2021

What problem does this feature solve?

在实现管理系统或者通常会有缓存组件内容时候,可用使用vue-router,keepAlive组件非常好的解决。

但在管理缓存内容时候,keepAlive只提供了max cache count和include, exclude(component name)功能。

在多个链接对应一个组件,如: /xx/edit, /xx/create, /xx/edit?a=1时候,对应内部组件都只有唯一文件name,这时候使用include,exclude就不能区别管理缓存内容,所以需要手动管理cache。

在开发环境中已有instance.__v_cache, 但是编译后,instance上无__v_cache。

源码KeepAlive.ts中,有判断过滤掉了。

if (DEV || FEATURE_PROD_DEVTOOLS) { ;(instance as any).__v_cache = cache }

十分希望去掉过滤,在prod环境中添加支持,感谢阅读。

What does the proposed API look like?

keepAlive component, instance.__v_cache or instance.{delete(key){}, refresh(key){}}

avatar
Dec 28th 2021

#5105 #4339 When the data is huge, it does really necessary, there are two linked PR. 当数据量巨大的时候,这确实很有必要,已经有两个相关的提交了

avatar
Dec 29th 2021

#5105 #4339 When the data is huge, it does really necessary, there are two linked PR. 当数据量巨大的时候,这确实很有必要,已经有两个相关的提交了

确实这不是最优雅的解决方案,keepAlive的include如果加上对key支持也可以实现管理,但目前还不知道在哪个版本能上这个功能,解决大家都头痛了很久很久的问题。[笑cry]

avatar
Dec 31st 2021
avatar
Mar 24th 2022

#5105 通过这么微小的改动即可优雅支持,所以,还是百思不得解,为何这个功能还是迟迟不能支持 :(