vue 页面缓存keep-alive 使用include动态实现页面缓存 根据栈的推进和返回为页面设置缓存


多读多写多记录,多学多练多思考。----------- Grapefruit.Banuit Gang(香柚帮)


         vue项目中为页面设置缓存,可以大大的节省性能,a页面跳转到b页面时,保留a页面的操作,b页面返回a页面时,a页面之前的操作不会发生改变,数据不会重复渲染。

         vue页面缓存使用的是keep-alive,具体使用方法:

         app.vue中:


<keep-alive>
   <router-view v-if="$route.meta.keep_alive"></router-view>
</keep-alive>
   <router-view v-if="!$route.meta.keep_alive"></router-view>

需要缓存的组件内容直接在router中添加:


                {
			path: '/demo',
			name: 'demo',
			component: Demo,
			meta: {
                             keepAlive: true // true 表示需要使用缓存 false表示不需要被缓存
                        }
		}


          缓存的基本用法就是这样,但是这样写柚子发现会有bug,因为具体的实际项目中是不会让一个页面一直在缓存状态的,这个时候就要用到include属性了,他可以实现动态让某个页面进行缓存或者取消缓存,下面说方法:

首先还是app.vue页面

            
                        <keep-alive :include="includePageNames">
                            <!-- includePageNames是数组,用来存放需要缓存的页面的路由中的path或者name的 -->
				<router-view class="router-view"></router-view>
			</keep-alive>

然后要在js中生命一下:

            data() {
			return {
				includePageNames: ['启动页_name'],//数组中默认放你项目的启动页面的name
			}
		},

最后要通过监听路由的方法,动态往数组里面添加页面的name值:

watch: {
			'$route' (to, from) {
                //判断数组中是否存在这个name,如果存在,则说明是返回的,要清除缓存
				if(this.includePageNames.indexOf(to.name) == -1) {//不存在,添加缓存
						this.includePageNames.push(to.name)
					} else {//存在,清除缓存
						this.includePageNames.pop()
					}
					
				}
			}
		},


//如果是一次回退n页的话,可以用splice方法,一次删除多个元素,也就是清除多个页面的缓存

好了,到此实现vue页面的动态缓存已经实现了,如果还有其他问题的小伙伴可以继续回复我,我们可以互相讨论!!!

希望能帮助到一些朋友!!!

 

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

@Grapefruit

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值