3级路由缓存问题
访问3级路由时,3级根路由的名称不会存入state.tagsView.cachedViews中,所以3级路由页面不会缓存。 找到了一种解决方案: 在3级路由根页面即本例的\nested\menu1\index.vue中的created方法内,将根页面的名称加入到state.tagsView.cachedViews。这样3级路由页面就可以进行缓存,并且更深层级如menu1-2-1也可以进行缓存。
This commit is contained in:
		@@ -1,7 +1,23 @@
 | 
				
			|||||||
<template>
 | 
					<template>
 | 
				
			||||||
  <div style="padding:30px;">
 | 
					  <div style="padding:30px;">
 | 
				
			||||||
    <el-alert :closable="false" title="menu 1">
 | 
					    <el-alert :closable="false" title="menu 1">
 | 
				
			||||||
 | 
					      <el-input v-model="input" placeholder="placeholder" />
 | 
				
			||||||
      <router-view />
 | 
					      <router-view />
 | 
				
			||||||
    </el-alert>
 | 
					    </el-alert>
 | 
				
			||||||
  </div>
 | 
					  </div>
 | 
				
			||||||
</template>
 | 
					</template>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<script>
 | 
				
			||||||
 | 
					export default {
 | 
				
			||||||
 | 
					  name: 'Menu1',
 | 
				
			||||||
 | 
					  data() {
 | 
				
			||||||
 | 
					    return {
 | 
				
			||||||
 | 
					      input: 'Menu1'
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  created() {
 | 
				
			||||||
 | 
					    const route = this.$route.matched.find(item => item.name === 'Menu1')
 | 
				
			||||||
 | 
					    this.$store.dispatch('tagsView/addCachedView', route)
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					</script>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,7 +1,20 @@
 | 
				
			|||||||
<template>
 | 
					<template>
 | 
				
			||||||
  <div style="padding:30px;">
 | 
					  <div style="padding:30px;">
 | 
				
			||||||
 | 
					    <el-input v-model="input" placeholder="placeholder" />
 | 
				
			||||||
    <el-alert :closable="false" title="menu 1-1" type="success">
 | 
					    <el-alert :closable="false" title="menu 1-1" type="success">
 | 
				
			||||||
      <router-view />
 | 
					      <router-view />
 | 
				
			||||||
    </el-alert>
 | 
					    </el-alert>
 | 
				
			||||||
  </div>
 | 
					  </div>
 | 
				
			||||||
</template>
 | 
					</template>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<script>
 | 
				
			||||||
 | 
					export default {
 | 
				
			||||||
 | 
					  /* eslint-disable-next-line */
 | 
				
			||||||
 | 
					  name: 'Menu1-1',
 | 
				
			||||||
 | 
					  data() {
 | 
				
			||||||
 | 
					    return {
 | 
				
			||||||
 | 
					      input: 'Menu1-1'
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					</script>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,7 +1,20 @@
 | 
				
			|||||||
<template>
 | 
					<template>
 | 
				
			||||||
  <div style="padding:30px;">
 | 
					  <div style="padding:30px;">
 | 
				
			||||||
    <el-alert :closable="false" title="menu 1-2" type="success">
 | 
					    <el-alert :closable="false" title="menu 1-2" type="success">
 | 
				
			||||||
 | 
					      <el-input v-model="input" placeholder="placeholder" />
 | 
				
			||||||
      <router-view />
 | 
					      <router-view />
 | 
				
			||||||
    </el-alert>
 | 
					    </el-alert>
 | 
				
			||||||
  </div>
 | 
					  </div>
 | 
				
			||||||
</template>
 | 
					</template>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<script>
 | 
				
			||||||
 | 
					export default {
 | 
				
			||||||
 | 
					  /* eslint-disable-next-line */
 | 
				
			||||||
 | 
					  name: 'Menu1-2',
 | 
				
			||||||
 | 
					  data() {
 | 
				
			||||||
 | 
					    return {
 | 
				
			||||||
 | 
					      input: 'Menu1-2'
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					</script>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,5 +1,18 @@
 | 
				
			|||||||
<template functional>
 | 
					<template>
 | 
				
			||||||
  <div style="padding:30px;">
 | 
					  <div style="padding:30px;">
 | 
				
			||||||
 | 
					    <el-input v-model="input" placeholder="placeholder" />
 | 
				
			||||||
    <el-alert :closable="false" title="menu 1-2-1" type="warning" />
 | 
					    <el-alert :closable="false" title="menu 1-2-1" type="warning" />
 | 
				
			||||||
  </div>
 | 
					  </div>
 | 
				
			||||||
</template>
 | 
					</template>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<script>
 | 
				
			||||||
 | 
					export default {
 | 
				
			||||||
 | 
					  /* eslint-disable-next-line */
 | 
				
			||||||
 | 
					  name: 'Menu1-2-1',
 | 
				
			||||||
 | 
					  data() {
 | 
				
			||||||
 | 
					    return {
 | 
				
			||||||
 | 
					      input: 'Menu1-2-1'
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					</script>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,5 +1,18 @@
 | 
				
			|||||||
<template functional>
 | 
					<template>
 | 
				
			||||||
  <div style="padding:30px;">
 | 
					  <div style="padding:30px;">
 | 
				
			||||||
 | 
					    <el-input v-model="input" placeholder="placeholder" />
 | 
				
			||||||
    <el-alert :closable="false" title="menu 1-2-2" type="warning" />
 | 
					    <el-alert :closable="false" title="menu 1-2-2" type="warning" />
 | 
				
			||||||
  </div>
 | 
					  </div>
 | 
				
			||||||
</template>
 | 
					</template>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<script>
 | 
				
			||||||
 | 
					export default {
 | 
				
			||||||
 | 
					  /* eslint-disable-next-line */
 | 
				
			||||||
 | 
					  name: 'Menu1-2-2',
 | 
				
			||||||
 | 
					  data() {
 | 
				
			||||||
 | 
					    return {
 | 
				
			||||||
 | 
					      input: 'Menu1-2-2'
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					</script>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,5 +1,18 @@
 | 
				
			|||||||
<template functional>
 | 
					<template>
 | 
				
			||||||
  <div style="padding:30px;">
 | 
					  <div style="padding:30px;">
 | 
				
			||||||
 | 
					    <el-input v-model="input" placeholder="placeholder" />
 | 
				
			||||||
    <el-alert :closable="false" title="menu 1-3" type="success" />
 | 
					    <el-alert :closable="false" title="menu 1-3" type="success" />
 | 
				
			||||||
  </div>
 | 
					  </div>
 | 
				
			||||||
</template>
 | 
					</template>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<script>
 | 
				
			||||||
 | 
					export default {
 | 
				
			||||||
 | 
					  /* eslint-disable-next-line */
 | 
				
			||||||
 | 
					  name: 'Menu1-3',
 | 
				
			||||||
 | 
					  data() {
 | 
				
			||||||
 | 
					    return {
 | 
				
			||||||
 | 
					      input: 'Menu1-3'
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					</script>
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user