问题描述:
在使用 Vue.js 开发单页面应用时,当进行路由切换时,页面内容不会重新加载,会出现缓存的情况,造成展示内容与实际内容不符的情况。那么如何解决这个问题呢?
解决方法:
我们可以使用 Vue 的一个组件 keep-alive 来缓存页面内容,实现在路由切换时不重新加载。
keep-alive 是 Vue 的内置组件,可以将需要缓存的内容包裹起来,把内容缓存起来,下次切换路由时不会重新解析 DOM 树,而是直接从缓存中调用,从而减少页面渲染的时间。我们可以在
在 Vue 中使用 keep-alive 可以参照下面的代码:
<template>
<div>
<router-view></router-view>
</div>
</template>
<script>
export default {
name: "App",
components: {},
};
</script>
<style>
</style>
<!-- 在路由切换时,不重新加载页面 -->
<keep-alive :include="['home', 'about']"></keep-alive>
在这里,我们使用 include 属性指定需要缓存的路由名称,这样我们访问路由时,当路由名称匹配到 include 中指定的名称时,会把路由对应的组件缓存起来。
示例 1:
<template>
<div>
<h2>Home Page</h2>
<p>{{msg}}</p>
</div>
</template>
<script>
export default {
name: "Home",
data: function () {
return {
msg: "This is home page",
};
},
};
</script>
<!-- 在路由切换时,不重新加载页面 -->
<keep-alive :include="['home']"></keep-alive>
示例 2:
<template>
<div>
<h2>About Page</h2>
<p>{{msg}}</p>
</div>
</template>
<script>
export default {
name: "About",
data: function () {
return {
msg: "This is about page",
};
},
};
</script>
<!-- 在路由切换时,不重新加载页面 -->
<keep-alive :include="['about']"></keep-alive>
这样,在路由切换到 home 或 about 页面时,页面内容就可以被缓存,再次访问时就可以直接从缓存中获取内容,避免了重新加载的时间消耗。
除了使用 include 属性,keep-alive 还提供了其它的属性可供选择,例如 exclude、max、min 等属性,可以根据实际情况选择使用。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Vue 路由切换时页面内容没有重新加载的解决方法 - Python技术站