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 相关文章推荐
js正确获取元素样式详解
Aug 07 Javascript
jQuery中focus事件用法实例
Dec 26 Javascript
DOM基础教程之使用DOM控制表单
Jan 20 Javascript
浅析AngularJS Filter用法
Dec 28 Javascript
详解JavaScript对象序列化
Jan 19 Javascript
原生js三级联动的简单实现代码
Jun 07 Javascript
Bootstrap 过渡效果Transition 模态框(Modal)
Mar 17 Javascript
jQuery使用JSONP实现跨域获取数据的三种方法详解
May 04 jQuery
小程序实现日历左右滑动效果
Oct 21 Javascript
vue+webpack dev本地调试全局样式引用失效的解决方案
Nov 12 Javascript
微信小程序onShareTimeline()实现分享朋友圈
Jan 07 Javascript
在JavaScript中如何使用宏详解
May 06 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漏洞小结
2012/02/05 PHP
国外PHP程序员的13个好习惯小结
2012/02/20 PHP
php对大文件进行读取操作的实现代码
2013/01/23 PHP
php页码形式分页函数支持静态化地址及ajax分页
2014/03/28 PHP
php专用数组排序类ArraySortUtil用法实例
2015/04/03 PHP
详细解读PHP的Yii框架中登陆功能的实现
2015/08/21 PHP
Laravel框架实现利用监听器进行sql语句记录功能
2018/06/06 PHP
php实现构建排除当前元素的乘积数组方法
2018/10/06 PHP
PHP正则验证字符串是否为数字的两种方法并附常用正则
2019/02/27 PHP
javascript不可用的问题探究
2013/10/01 Javascript
使用JS或jQuery模拟鼠标点击a标签事件代码
2014/03/10 Javascript
使用js获取伪元素的content实例
2017/10/24 Javascript
Vue服务器渲染Nuxt学习笔记
2018/01/31 Javascript
es6 symbol的实现方法示例
2019/04/02 Javascript
微信小程序wx.navigateTo中events属性实现页面间通信传值,数据同步
2019/07/13 Javascript
js实现网页随机验证码
2020/10/19 Javascript
vue下载二进制流图片操作
2020/10/26 Javascript
flask中使用SQLAlchemy进行辅助开发的代码
2013/02/10 Python
python统计cpu利用率的方法
2015/06/02 Python
对Python进行数据分析_关于Package的安装问题
2017/05/22 Python
Python对ElasticSearch获取数据及操作
2019/04/24 Python
Python unittest 自动识别并执行测试用例方式
2020/03/09 Python
Django+boostrap 美化admin后台的操作
2020/03/11 Python
Python BeautifulReport可视化报告代码实例
2020/04/13 Python
canvas小画板之平滑曲线的实现
2020/08/12 HTML / CSS
优瑞自动咖啡机官网:Jura
2018/09/29 全球购物
澳大利亚设计的优质鞋类和适合澳大利亚生活方式的服装:Rivers
2019/04/23 全球购物
可爱的童装和鞋子:Fabkids
2019/08/16 全球购物
Shop Apotheke瑞士:您的健康与美容网上商店
2019/10/09 全球购物
Vrbo西班牙:预订您的度假公寓(公寓、乡村房屋…)
2020/04/27 全球购物
写好求职信第一句话的技巧
2013/10/26 职场文书
大学生关于奋斗的演讲稿
2014/01/09 职场文书
大学生会计职业生涯规划范文
2014/02/28 职场文书
2015年调度员工作总结
2015/04/30 职场文书
《曹冲称象》教学反思
2016/02/20 职场文书
职场:企业印章管理制度(模板)
2019/10/18 职场文书