当前位置: 首页 > news >正文

解决vue 部分页面缓存,部分页面不缓存的问题

前端时间项目迭代,其中有个需求 在vue里面,有a.b.c三个页面,要达到的效果是从a页面进去b页面,b页面需要刷新,但若从b页面进入c页面了以后再回到b页面,b页面需要保留之前的值,不做刷新;

第一想到的是:<router-view v-if="$route.meta.keepAlive"></router-view> ;但是由于v-if 每次会销毁页面元素,导致第一次是缓存不成功的;在网上也找到过window.reload();这种方法,但是页面会有一瞬间的空白,用户体验不是很好; 最后找了一种方法,vuex结合路由守卫可以达到此效果,具体代码如下:

首先app.vue

//jscomputed: {keepAlive () {return this.$store.getters.keepAlive}},//html
<keep-alive  :include='keepAlive'><router-view></router-view>
</keep-alive>
vuex 中需要定义keepAliveimport Vue from 'vue'
import Vuex from 'vuex'Vue.use(Vuex)var store = new Vuex.Store({// 定义状态state: {keekAlives:[],},mutations:{  //更改 Vuex 的 store 中的状态SET_KEEP_ALIVE:function(state, keekAlives){return state.keekAlives = keekAlives;}},getters: {keepAlive: function(state){return state.keekAlives//   keepAlive: state => state.keekAlives}}
})export default store
最后在需要缓存的页面进行判断beforeRouteEnter (to, from, next) {next(vm => {if (from.name=="serve") {vm.$store.commit('SET_KEEP_ALIVE', ['addProject'])}})},beforeRouteLeave (to, from, next) {if (to.name == "companySearch") {this.$store.commit('SET_KEEP_ALIVE', ['addProject'])} else if (to.name=="serve" || to.name=="addSuccess") {this.$store.commit('SET_KEEP_ALIVE', []) }next()},

这样就实现了vue 部分页面缓存,部分页面不缓存的问题!
 

相关文章:

  • 2023.11.15 关于 Spring Boot 配置文件
  • 基于Vue+SpringBoot的农村物流配送系统 开源项目
  • 使用composer安装ffmpeg的步骤
  • 数组相关面试题--5.合并两个有序数组
  • LEEDCODE 220 存在重复元素3
  • 数据分析场景下,企业如何做好大模型选型和落地?
  • 通付盾Web3专题 | KYT/AML:Web3合规展业的必要条件
  • 12 Go的接口
  • System.lineSeparator() 解决 append(“\r\n“) 换行符抛异常:No such file or diretory
  • 【C++】:STL——标准模板库介绍 || string类
  • how to find gcc openbug
  • 【计算机网络】TCP协议
  • 【Kingbase FlySync】命令行:同步软件安装部署,并实现KES到KES实现同步迁移
  • 基于pytest-bdd的项目目录结构和命名规范
  • 用照片预测人的年龄【图像回归】
  • 2018天猫双11|这就是阿里云!不止有新技术,更有温暖的社会力量
  • ABAP的include关键字,Java的import, C的include和C4C ABSL 的import比较
  • Fastjson的基本使用方法大全
  • idea + plantuml 画流程图
  • iOS高仿微信项目、阴影圆角渐变色效果、卡片动画、波浪动画、路由框架等源码...
  • JAVA_NIO系列——Channel和Buffer详解
  • leetcode-27. Remove Element
  • Mocha测试初探
  • SpiderData 2019年2月25日 DApp数据排行榜
  • supervisor 永不挂掉的进程 安装以及使用
  • text-decoration与color属性
  • 从零开始在ubuntu上搭建node开发环境
  • 仿天猫超市收藏抛物线动画工具库
  • 巧用 TypeScript (一)
  • Spring Batch JSON 支持
  • 如何通过报表单元格右键控制报表跳转到不同链接地址 ...
  • ​批处理文件中的errorlevel用法
  • #if 1...#endif
  • (1)虚拟机的安装与使用,linux系统安装
  • (六)什么是Vite——热更新时vite、webpack做了什么
  • (源码版)2024美国大学生数学建模E题财产保险的可持续模型详解思路+具体代码季节性时序预测SARIMA天气预测建模
  • (转)linux下的时间函数使用
  • ***微信公众号支付+微信H5支付+微信扫码支付+小程序支付+APP微信支付解决方案总结...
  • .bat批处理(一):@echo off
  • .htaccess 强制https 单独排除某个目录
  • .net web项目 调用webService
  • .net中我喜欢的两种验证码
  • /bin/bash^M: bad interpreter: No such file ordirectory
  • /使用匿名内部类来复写Handler当中的handlerMessage()方法
  • ??eclipse的安装配置问题!??
  • @软考考生,这份软考高分攻略你须知道
  • [ Linux Audio 篇 ] 音频开发入门基础知识
  • [14]内置对象
  • [4.9福建四校联考]
  • [CareerCup] 2.1 Remove Duplicates from Unsorted List 移除无序链表中的重复项
  • [CF482B]Interesting Array
  • [EFI]Atermiter X99 Turbo D4 E5-2630v3电脑 Hackintosh 黑苹果efi引导文件
  • [Java] 什么是IoC?什么是DI?它们的区别是什么?
  • [JavaEE系列] wait(等待) 和 notify(唤醒)
  • [LaTex]arXiv投稿攻略——jpg/png转pdf