大概是2018年12月初,公司需要做前后端分离,然后就赶鸭子上架,从原始的jsp到iview了。这中间的几万字就暂时省略,进入主题吧。
iview-admin在2018年12月之前的版本,都会存在【三级菜单之间切换页面无法缓存问题】,因为这个问题是作者在此之后才修复的这个bug,有图为证。
既然作者已经修复了这个bug,那我为毛还要写这篇博客呢?这个问题问得好,这要归功于我们的搜素,具体名字我就不点明了,简称BD吧,不管你输入什么关键字,它死活都找不到你想要的东西。无奈之下,我只能暂时放下爱国情怀,用Gg来查了。果不其然,一不留神就找到了。(这里只是个人吐槽,不接收反驳和批评,谢谢~)
吐槽够了,现在数一下作者是怎么修复的。其实很简单,只需要修改一个文件就可以了【src/components/parent-view/parent-view.vue】。
修改前:
<template>
<router-view/>
</template>
<script>
export default {
name: 'ParentView'
}
</script>
修改后:
<template>
<keep-alive :include="cacheList" :exclude="notCacheName">
<router-view ref="child"/>
</keep-alive>
</template>
<script>
export default {
name: 'ParentView',
computed: {
tagNavList () {
return this.$store.state.app.tagNavList
},
notCacheName () {
return [(this.$route.meta && this.$route.meta.notCache) ? this.$route.name : '']
},
cacheList () {
return ['ParentView', ...this.tagNavList.length ? this.tagNavList.filter(item => !(item.meta && item.meta.notCache)).map(item => item.name) : []]
}
}
}
</script>
这样就OK了。
作者修复这个bug的具体信息详见:https://github.com/iview/iview-admin/tree/master/src/view
至于具体为什么这样改就行了,我就不多说了(也不是很懂,毕竟不是专业前端,是个纯后台赶鸭子上架来做前端的),不过大概知道是要看看vue的路由和<router-view>的使用