vueRouter 配合 keep-alive 不生效的问题

文章目录

    • 问题说明
    • 案例复现
      • demo 结构
      • 问题复现和解决

其实这个不生效的问题根本也不算一个问题,犯的错和写错单词差不多,但是也是一时上头没发现,所以记录一下,如果遇到同样的问题,也希望可以帮助你早点看到这个哭笑不得的错误,哈哈哈

问题说明

  1. 这里我写了一个非常简单的demo来复现我的问题,我的问题场景出自于一个后台管理系统,我在 app.vue 中使用了 router-view 标签,来展示 layout 和其他一级路由,然后在 layout 下的 main 区域使用了一个 router-view 来展示通过菜单栏切换的子路由
  2. 问题就出在这里了,我把 keep-alive 写在了 app.vue 下的 router-view 位置,然后子路由中需要缓存的组件,就无法实现缓存,当时让我还以为是什么bug,但是也没发现什么问题,最后看官网也是这样使用的,最后在思考一段时间后点开 router 文件,猛然惊醒,写错了位置

案例复现

demo 结构

  1. 首先看一下我写的简单 demo

    在这里插入图片描述

  2. 效果很简单,点击切换路由,切换的这个路由是子路由,路由结果如下:

    const routes = [{path: '/',name: 'home',component: () => import('@/components/HomeView.vue'),children: [{path: 'about',component: () => import('@/views/AboutView.vue')},{path: 'message',component: () => import('@/views/MessageView.vue')}]}
    ]
    
  3. 这些我就不做赘述了,都非常简单

  4. app.vue 文件代码如下:

    <template><div><router-view></router-view></div>
    </template><script>
    export default {}
    </script><style scoped></style>
    
  5. 看了这个之后,在展示一下一级路由 HomeView,如下:

    <template><div class="home-container"><div class="header"><div class="tabs"><spanclass="tab"v-for="item in tabList":key="item.path"><router-link :to="item.path">{{ item.name }}</router-link></span></div></div><div class="main"><!-- 展示子路由的路由视图 --><router-view></router-view></div></div>
    </template><script>
    export default {data() {return {tabList: [{ name: '关于', path: '/about' },{ name: '留言', path: '/message' }]}}
    }
    </script><style lang="less" scoped>
    .home-container {width: 100vw;height: 100vh;display: flex;flex-direction: column;.header {height: 70px;display: flex;align-items: center;justify-content: center;border-bottom: 1px solid #666;.tab {margin-right: 20px;font-size: 20px;}}.main {flex: 1;width: 100%;}
    }
    </style>
    
  6. 其余两个页面和本次问题关系不大,而且都很简单就不展示了

问题复现和解决

  1. 现在我打需求是在切换页面的时候,可以让留言页面输入的内容进行缓存

  2. 我们在 app.vue 下是使用 keep-alive,看看效果

    <template><div><!-- MessageVue 是留言组件的 name 属性 --><keep-alive :include="['MessageVue']"><router-view></router-view></keep-alive></div>
    </template>
    
  3. 效果如图:

    在这里插入图片描述

  4. 现在是无法生效的,然后我们放在 HomeView 的路由出口上,如下:

    <template><div class="home-container"><div class="header"><div class="tabs"><spanclass="tab"v-for="item in tabList":key="item.path"><router-link :to="item.path">{{ item.name }}</router-link></span></div></div><div class="main"><keep-alive :include="['MessageVue']"><router-view></router-view></keep-alive></div></div>
    </template>
    
  5. 现在在看一下效果,如图:

    在这里插入图片描述

  6. 解决还是非常简单的,谨以此文记录我这次马虎的错误

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/330118.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

js逆向第13例:猿人学第6题js混淆-回溯赛

文章目录 m是加密字符串怎么来的?浏览器环境检测本地运行的js代码任务六:采集全部5页的彩票数据,计算全部中奖的总金额(包含一、二、三等奖) 此题总体难度低于第5题,老规矩还是查看控制台请求地址https://match.yuanrenxue.cn/api/match/6?m=rPRDgpbV3Wd%252FyPfURQAkxK…

冠军团队!第二届百度搜索创新大赛AI方案

Datawhale干货 作者&#xff1a;李柯辰&#xff0c;Datawhale成员 写在前面 大家好&#xff0c;我们是2023年第二届百度搜索创新大赛 赛道三——AI应用设计赛道的冠军团队——“肝到凌晨”&#xff0c;很高兴能与大家分享我们这次比赛的经验&#xff0c;同时也希望以后有机会可…

【前沿技术】超级稳定的视频卡通画方案

Git clone项目到本地 git clone gitgithub.com:Artiprocher/DiffSynth-Studio.git 基本原理 使用了stable diffusion稳定扩散模型和controlnet来控制图像生成的轮廓&#xff0c;animatediff控制视频帧与帧之间的连续性&#xff0c;最后使用RIFE技术平滑整个生成后的视频。 …

NI基于PC的测量和控制系统

基于PC的测量和控制系统为工程师提供了电气和物理测量功能&#xff0c;使其能够以可自定义、准确且经济实惠的方式进行台式测量. 什么是基于PC的测量和控制系统&#xff1f; 在基于PC的测量和控制系统中&#xff0c;NI硬件产品通过USB或以太网连接到PC或笔记本电脑。这种系统具…

Mediant approximation trick

近似值的一个取值技巧 如果知道一个数值变量的上限和下限&#xff0c;那么有一种快速的方法&#xff0c;快速获取该变量更准确的近似值。 比如&#xff0c;已知变量e的大小范围是19/7 < e < 87/32&#xff0c;就可以快速得到它的近似值。 Suppose you are trying to ap…

RIS 辅助无线网络:基于模型、启发式和机器学习优化方法

目录 abstractintroduction相关研究BACKGROUND AND PROBLEM FORMULATIONS FOR OPTIMIZING RIS-AIDED WIRELESS NETWORKSA 优化RIS-AIDED无线网络的背景和问题公式RIS操作原则&#xff1a;RIS控制&#xff1a;RIS部署 B 总速率/容量最大化C 功率最小化D 能源效率最大化E 用户公平…

JavaScript基础(24)_dom查询练习(一)

<!DOCTYPE html> <html lang"zh"> <head><meta charset"UTF-8"><link rel"stylesheet" href"../browser_default_style/reset.css"><title>dom查询练习一</title><style>.text {widt…

【STM32】PWR电源控制

1 PWR简介 PWR&#xff08;Power Control&#xff09;电源控制 PWR负责管理STM32内部的电源供电部分&#xff0c;可以实现可编程电压监测器和低功耗模式的功能 可编程电压监测器&#xff08;PVD&#xff09;可以监控VDD电源电压&#xff0c;当VDD下降到PVD阀值以下或上升到P…

在 Linux 中开启 Flask 项目持续运行

在 Linux 中开启 Flask 项目持续运行 在部署 Flask 项目时&#xff0c;情况往往并不是那么理想。默认情况下&#xff0c;关闭 SSH 终端后&#xff0c;Flask 服务就停止了。这时&#xff0c;您需要找到一种方法在 Linux 服务器上实现持续运行 Flask 项目&#xff0c;并在服务器…

Redis内存策略:「过期Key删除策略」+ 「内存淘汰策略」

Redis之所以性能强&#xff0c;最主要的原因就是基于内存存储&#xff0c;然而单节点的Redis其内存大小不宜过大&#xff0c;否则会影响持久化或主从同步的性能。 Redis内存满了&#xff0c;会发生什么&#xff1f; 在Redis的运行内存达到了某个阈值&#xff0c;就会触发内存…

olap/spark-tungsten:codegen

15721这一章没什么好说的&#xff0c;不再贴课程内容了。codegen和simd在工业界一般只会选一种实现。比如phothon之前用codegen&#xff0c;然后改成了向量化引擎。一般gen的都是weld IR/LLVM IR/当前语言&#xff0c;gen成C的也要检查是不是有本地预编译版本&#xff0c;要不没…

实战环境搭建-linux下安装mysql

下载wget命令 yum -y install wget 在线下载mysql安装包 wget https://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm 安装的过程中有可能出现秘钥过期,如下图: 解决办法: rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022 再次安装,如下…