美文网首页
keep-alive 动态销毁已缓存的组件

keep-alive 动态销毁已缓存的组件

作者: holidayPenguin | 来源:发表于2023-10-16 10:53 被阅读0次

    原文:vue.js - Vue 全站缓存之 keep-alive : 动态移除缓存 - 站在巨人肩膀上的程序员 - SegmentFault 思否

    暴力删除

    //使用Vue.mixin的方法拦截了路由离开事件,并在该拦截方法中实现了销毁页面缓存的功能。
    Vue.mixin({
        beforeRouteLeave:function(to, from, next){
            if (from && from.meta.rank && to.meta.rank && from.meta.rank>to.meta.rank)
            {//此处判断是如果返回上一层,你可以根据自己的业务更改此处的判断逻辑,酌情决定是否摧毁本层缓存。
                if (this.$vnode && this.$vnode.data.keepAlive)
                {
                    if (this.$vnode.parent && this.$vnode.parent.componentInstance && this.$vnode.parent.componentInstance.cache)
                    {
                        if (this.$vnode.componentOptions)
                        {
                            var key = this.$vnode.key == null
                                        ? this.$vnode.componentOptions.Ctor.cid + (this.$vnode.componentOptions.tag ? `::${this.$vnode.componentOptions.tag}` : '')
                                        : this.$vnode.key;
                            var cache = this.$vnode.parent.componentInstance.cache;
                            var keys  = this.$vnode.parent.componentInstance.keys;
                            if (cache[key])
                            {
                                if (keys.length) {
                                    var index = keys.indexOf(key);
                                    if (index > -1) {
                                        keys.splice(index, 1);
                                    }
                                }
                                delete cache[key];
                            }
                        }
                    }
                }
                this.$destroy();
            }
            next();
        },
    });
    

    Vue之keep-alive灵活清除页面缓存分享 - 掘金 (juejin.cn)

    相关文章

      网友评论

          本文标题:keep-alive 动态销毁已缓存的组件

          本文链接:https://www.haomeiwen.com/subject/gnmxidtx.html