需要解决的问题
项目中列表过多,很多情况在离开页面后需要保存页面的信息和数据。
keep-alive是方便的形式之一,但是在很多情况下还是要销毁原来的数据,便开始思索如何解决这个问题。
填坑
我看到有同事居然这么写了:
activated () {
if (this.$route.query.form.path === '.....') {
// 重置页面内的数据....
}
}
在做code review的时候心里真的是万马奔腾,
然后便决定去封装一个公用的销毁keep-alive的方法。
废话不多说,上代码
App.js
<!--App.vue-->
<template>
<div id="app">
<!--
使用 $route.meta.keepAlive + exclude 实现会更方便简洁
这里只需要增减 exclude 就可以了,exclude的数组长度也会得到合适的控制
使用state储存exclude数据(这里就不贴出来了)
-->
<keep-alive :exclude="excludeName">
<router-view v-if="$route.meta.keepAlive"></router-view>
</keep-alive>
<router-view v-if="!$route.meta.keepAlive"></router-view>
</div>
</template>
router.js
{
path: '*****',
name