vue使用keep-alive实现组件切换时保存原组件数据方法


Posted in Javascript onOctober 30, 2020

前言

最近在做一个精品课程后台管理系统,其中涉及文件上传和文件列表展示,我不想将他们写入一个组件,故分开两个组件实现。

问题:但由于上传文件需要时间,这时要是用户切换别的组件查看时,上传文件组件就销毁了,导致文件上传失败。

追求效果:想利用keep-alive实现上传组件切换时仍继续上传文件,而其他组件则不会存活。

使用keep-alive的过程

普通方法:直接使用keep-alive

<keep-alive>
 <router-view />
</keep-alive>

效果:虽然能使上传文件组件存活,在切换组件时仍可继续上传

问题:其余各个组件都不会销毁和重新挂起,导致所有组件的内容不会更新

更好一点的方法:配置路由加以判断是否适用keep-alive

路由js:

//ManageFiles组件需要重新挂起刷新数据,而ManageUploadFile为上传文件组件,故想之存活
{
 path:'files',
 name:'ManageFiles',
 component: () => import('../pages/course/manage/resource/files/Files'),
},
{
 path:'uploadfile',
 name:'ManageUploadFile',
 meta:{
 keepAlive:true  //是否存活标志
 },
 component: () => import('../pages/course/manage/resource/files/UploadFile'),
},

切换组件:

<template>
 <div class="manageResource">
 <keep-alive>
  <router-view v-if="$route.meta.keepAlive" />
 </keep-alive>
 <router-view v-if="!$route.meta.keepAlive" />
 </div>
</template>

效果图:

(1)一开始为File组件,mounted()打印'我是File'

vue使用keep-alive实现组件切换时保存原组件数据方法

(2)第一次切换为UploadFile组件,mounted()打印'我是UploadFile'

vue使用keep-alive实现组件切换时保存原组件数据方法

(3)再次切换回File组件,mounted()再次重新打印'我是File'

vue使用keep-alive实现组件切换时保存原组件数据方法

(4)最后再次切换回UploadFile组件,因为它一直存活,所以不会重新触发mounted()再次重新打印'我是UploadFile'

vue使用keep-alive实现组件切换时保存原组件数据方法

补充知识:vue 动态组件(tabs切换)keep-alive:主要用于保留组件状态或避免重新渲染

通过keep-alive 保留数据值 填写数据时切换到其他页面,后返回当前页数据保留 ,主要用于保留组件状态或避免重新渲染

<!--动态组件-component使用-->
 <div class="app">
 <ul>
 <li @click="currView='home'">首页</li>
 <li @click="currView='abount'">关于我们</li>
 </ul>
 <!--通过keep-alive 保留数据值 填写数据时切换到其他页面,后返回当前页数据保留-->
 <keep-alive>
 <component :is="currView"></component>
 </keep-alive>
 </div>
<script type="text/x-Template" id="homeTemp">
  <h2>首页数据</h2>
</script>
<script type="text/x-Template" id="abountTemp">
  <h2>关于我们数据<input type="text"/></h2>
</script>
<script type="text/javascript">
 var vm=new Vue({
 el:'.app',
 data:{
  currView:"home"
 },
 components:{
  "home":{
   template:"#homeTemp"
  },
  "abount":{
  template:"#abountTemp"
  }
 }
 });
 
</script>

vue使用keep-alive实现组件切换时保存原组件数据方法

以上这篇vue使用keep-alive实现组件切换时保存原组件数据方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
用JavaScript隐藏控件的方法
Sep 21 Javascript
解决Jquery向页面append新元素之后事件的绑定问题
Mar 16 Javascript
jquery插件bxslider用法实例分析
Apr 16 Javascript
js正则表达式replace替换变量方法
May 21 Javascript
AngularJS入门教程引导程序
Aug 18 Javascript
JS中的作用域链
Mar 01 Javascript
Angular4编程之表单响应功能示例
Dec 13 Javascript
基于mpvue的小程序项目搭建的步骤
May 22 Javascript
Angularjs中的$apply及优化使用详解
Jul 02 Javascript
小程序实现列表删除功能
Oct 30 Javascript
JavaScript实现新年倒计时效果
Nov 17 Javascript
vue用BMap百度地图实现即时搜索功能
Sep 26 Javascript
vue内置组件keep-alive事件动态缓存实例
Oct 30 #Javascript
Javascript表单序列化原理及实现代码详解
Oct 30 #Javascript
解决Vue-cli无法编译es6的问题
Oct 30 #Javascript
Vue2.0 ES6语法降级ES5的操作
Oct 30 #Javascript
Vue自定义表单内容检查rules实例
Oct 30 #Javascript
探索node之事件循环的实现
Oct 30 #Javascript
使用TS来编写express服务器的方法步骤
Oct 29 #Javascript
You might like
使用php来实现网络服务
2009/09/15 PHP
PHP常用算法和数据结构示例(必看篇)
2017/03/15 PHP
『JavaScript』限制Input只能输入数字实现思路及代码
2013/04/22 Javascript
Seajs的学习笔记
2014/03/04 Javascript
jQuery插件ajaxfileupload.js实现上传文件
2020/10/23 Javascript
Bootstrap4一次重大更新 几乎涉及每行代码
2016/05/16 Javascript
工厂模式在JS中的实践
2017/01/18 Javascript
Vue2.0实现1.0的搜索过滤器功能实例代码
2017/03/20 Javascript
详解使用vuex进行菜单管理
2017/12/21 Javascript
JS实现图片居中悬浮效果
2017/12/25 Javascript
vue 中的keep-alive实例代码
2018/07/20 Javascript
Nautil 中使用双向数据绑定的实现
2019/10/02 Javascript
pandas 对每一列数据进行标准化的方法
2018/06/09 Python
完美解决python中ndarray 默认用科学计数法显示的问题
2018/07/14 Python
Python实现的大数据分析操作系统日志功能示例
2019/02/11 Python
Django Rest framework认证组件详细用法
2019/07/25 Python
pytorch 实现打印模型的参数值
2019/12/30 Python
PyQt5事件处理之定时在控件上显示信息的代码
2020/03/25 Python
如何完美的建立一个python项目
2020/10/09 Python
Python实现手势识别
2020/10/21 Python
Django集成MongoDB实现过程解析
2020/12/01 Python
利用CSS3实现文字折纸效果实例代码
2018/07/10 HTML / CSS
HTML5 Web Workers之网站也能多线程的实现
2013/04/24 HTML / CSS
全球性的在线时尚男装零售商:boohooMAN
2016/12/17 全球购物
英国安全产品购物网站:The Safe Shop
2017/03/20 全球购物
windeln官方海外旗舰店:德淘超人气母婴超市
2017/12/15 全球购物
荷兰演唱会和体育比赛订票网站:viagogo荷兰
2018/04/08 全球购物
普通员工辞职信
2014/01/17 职场文书
优秀班主任经验交流材料
2014/06/02 职场文书
法定代表人授权委托书
2014/09/19 职场文书
2014年法制宣传日活动方案
2014/11/02 职场文书
写给媳妇的检讨书
2015/05/06 职场文书
导游词之江南园林狮子林
2019/09/16 职场文书
mysql中between的边界,范围说明
2021/06/08 MySQL
Android Flutter实现图片滑动切换效果
2022/04/07 Java/Android
SQLServer常见数学函数梳理总结
2022/08/05 MySQL