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 相关文章推荐
jQuery对val和atrr(&quot;value&quot;)赋值的区别介绍
Sep 26 Javascript
jQuery实现仿淘宝带有指示条的图片转动切换效果完整实例
Mar 04 Javascript
JQuery判断checkbox是否选中及其它复选框操作方法合集
Jun 01 Javascript
jQuery+CSS3折叠卡片式下拉列表框实现效果
Nov 02 Javascript
浅谈javascript中的constructor
Jun 08 Javascript
Bootstrap源码解读网格系统(3)
Dec 22 Javascript
js实现消息滚动效果
Jan 18 Javascript
Vue.js简易安装和快速入门(第二课)
Oct 17 Javascript
集成vue到jquery/bootstrap项目的方法
Feb 10 jQuery
windows实现npm和cnpm安装步骤
Oct 24 Javascript
详解vue页面首次加载缓慢原因及解决方案
Nov 06 Javascript
OpenLayers加载缩放控件使用方法详解
Sep 25 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
1982年日本摄影师镜头下的中国孩子 那无忧无虑的童年
2020/03/12 杂记
关于时间计算的结总
2006/12/06 PHP
php下实现在指定目录搜索指定类型文件的函数
2008/10/03 PHP
PHP中header函数的用法及其注意事项详解
2016/06/13 PHP
PHP基于反射机制实现插件的可插拔设计详解
2016/11/10 PHP
PHP设计模式之工厂方法设计模式实例分析
2018/04/25 PHP
20款效果非常棒的 jQuery 插件小结分享
2011/11/18 Javascript
js函数的延迟加载实现代码
2012/10/11 Javascript
javascript工厂方式定义对象
2014/12/26 Javascript
wangEditor编辑器失去焦点后仍然可以在原位置插入图片分析
2015/05/06 Javascript
解决jQuery使用JSONP时产生的错误
2015/12/02 Javascript
JavaScript微信定位功能实现方法
2016/11/29 Javascript
一个例子轻松学会Vue.js
2017/01/02 Javascript
使用重写url机制实现验证码换一张功能
2017/08/01 Javascript
JS解析url查询参数的简单代码
2017/08/06 Javascript
node中的cookie的具体使用
2018/09/13 Javascript
js数组中去除重复值的几种方法
2020/08/03 Javascript
[50:01]Ti4 冒泡赛第二天 NEWBEE vs Titan
2014/07/15 DOTA
测试、预发布后用python检测网页是否有日常链接
2014/06/03 Python
Python中每次处理一个字符的5种方法
2015/05/21 Python
Python基于递归实现电话号码映射功能示例
2018/04/13 Python
Python编程中flask的简介与简单使用
2018/12/28 Python
python查看文件大小和文件夹内容的方法
2019/07/08 Python
django中瀑布流写法实例代码
2019/10/14 Python
python中判断文件结束符的具体方法
2020/08/04 Python
美国婚礼礼品网站:MyWeddingFavors
2018/09/26 全球购物
DJI全球:DJI Global
2021/03/15 全球购物
微信营销策划方案
2014/02/24 职场文书
北体毕业生求职信
2014/02/28 职场文书
《沉香救母》教学反思
2014/04/19 职场文书
《每逢佳节倍思亲》教后反思
2014/04/19 职场文书
青年安全生产示范岗事迹材料
2014/05/04 职场文书
反邪教标语
2014/06/23 职场文书
公司股份转让协议书范本
2015/01/28 职场文书
建国大业观后感600字
2015/06/01 职场文书
Python自然语言处理之切分算法详解
2021/04/25 Python