当前代码如下,需要实现不同页面的切换,并且实现缓存效果,但目前缓存效果未实现。
<router-view v-slot="{ Component, route }">
<keep-alive>
<transition :name="transitionName">
<div :key="route?.name" style="width: 100%;height: 100%;position: absolute;left: 0;top: 0;">
<component :is="Component" />
</div>
</transition>
</keep-alive>
</router-view>
在onMounted中输出1来判断是否缓存成功,即首次加载该页面输出1,进入二级界面后返回将不在输出1。尝试修改后如下
<router-view v-slot="{ Component, route }">
<transition :name="transitionName">
<keep-alive>
<component :is="Component" v-if="route?.meta?.isKeepAlive || route?.meta?.isRouterKeepAlive"
:key="route?.meta?.isRouterKeepAlive ? route?.fullPath : route?.name"
style="width: 100%;height: 100%;position: absolute;left: 0;top: 0;"/>
</keep-alive>
</transition>
</router-view>
缓存虽然实现了,但是页面切换变得混乱。如何同时保留页面切换与缓存的效果呢?
这样试下
<template> <router-view v-slot="{ Component, route }"> <transition :name="transitionName"> <keep-alive :include="shouldCache(route)"> <component :is="Component" :key="route.fullPath" @mounted="onMountedHandler" style="width: 100%; height: 100%; position: absolute; left: 0; top: 0;" /> </keep-alive> </transition> </router-view> </template> <script setup> import { ref, onBeforeRouteUpdate, useRoute } from 'vue-router'; import { onMounted } from 'vue'; const route = useRoute(); const transitionName = ref('fade'); // 默认过渡名称 // 监听路由的变化 onBeforeRouteUpdate((to, from) => { // 在路由变更之前改变过渡名称 transitionName.value = `${to.name}-transition`; }); // 判断是否应该缓存当前组件 function shouldCache(route) { return route.meta.isKeepAlive || route.meta.isRouterKeepAlive ? route.name : null; } // 处理 mounted 钩子事件 function onMountedHandler() { console.log(1); }
本文向大家介绍基于vue中keep-alive缓存问题的解决方法,包括了基于vue中keep-alive缓存问题的解决方法的使用技巧和注意事项,需要的朋友参考一下 vue开发的时候,我们经常会有这样的需求:开发一个详细页面来展示商品的详细信息,根据列表页传入的id进行请求,拿到对应的数据进行渲染。 但是一般在路由上都会加上keep-alive保持数据的状态,除非强制无缓存刷新,这就导致第一次进入详
本文向大家介绍解决AngualrJS页面刷新导致异常显示问题,包括了解决AngualrJS页面刷新导致异常显示问题的使用技巧和注意事项,需要的朋友参考一下 绪 俗话说,细节决定成败,编程亦是如此。编程过程中我们可能会不自觉的忽视一些细节问题,殊不知,这些细节正是导致页面显示出现问题的地方。今略举一例,与君共勉之。 页面正常加载后,显示如下: 按F5刷新之后,页面如下所示: 很明显,页面显示出现
本文向大家介绍Vue中keep-alive组件的深入理解,包括了Vue中keep-alive组件的深入理解的使用技巧和注意事项,需要的朋友参考一下 前言 最近在写Vue项目的时候,遇到了一个问题,我从A路由使用parmas方式传参跳转到B路由,然后从B路由跳转到C路由,再从C路由返回B路由的时候,发现从A路由传到B路由的参数已经不存在了。 正文 我们都知道,vue组件进行路由跳转时,会销毁当前组件
非标准 这个功能是非标准的,不在标准轨道上。不要在面向 Web 的生产站点上使用它:它不适用于每个用户。实现之间也可能存在很大的不兼容性,并且行为在未来可能会发生变化。 Keep-Alive一般报头允许发送者提示关于如何连接,并且可以被用于设置超时时间,并且请求的最大数量。 Connection头需要被设置为“保活”这个标题有任何意义。此外,Connection和Keep-Alive在 HTTP
1. 前言 本小节我们将介绍 Vue 的动态组件以及缓存 keep-alive 的使用。包括动态组件的使用方法,以及如何使用 keep-alive 实现组件的缓存效果。 2. 慕课解释 动态组件是让多个组件使用同一个挂载点,并动态切换。动态组件是 Vue 的一个高级用法,但其实它的使用非常简单。keep-alive 是 vue 的内置组件,能在组件切换过程中将状态保留在内存中,防止重复渲染 DOM
描述:切换一个新的没打开的界面。就会触发打开界面的created。 解释:当前打开A界面,从A界面进入B界面,A界面触发created。再打开C界面,A界面又触发created。 B界面和C界面已经打开过,这时候随便切换,不再触发A界面的created 解决了:router-view 多加了key导致的刷新