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函数ajax
Aug 20 Javascript
jQuery 幻灯片插件(带缩略图功能)
Jan 24 Javascript
JavaScript代码实现图片循环滚动效果
Mar 19 Javascript
Bootstrap轮播图学习使用
Feb 10 Javascript
JS库之Highlight.js的用法详解
Sep 13 Javascript
js 判断一个数字是不是2的n次方幂的实例
Nov 26 Javascript
webpack4的迁移的使用方法
May 25 Javascript
js时间戳转yyyy-MM-dd HH-mm-ss工具类详解
Apr 30 Javascript
JavaScript运动原理基础知识详解
Apr 02 Javascript
微信h5静默和非静默授权获取用户openId的方法和步骤
Jun 08 Javascript
Element-UI 使用el-row 分栏布局的教程
Oct 26 Javascript
Vant picker 多级联动操作
Nov 02 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一些有意思的小区别
2006/12/06 PHP
php分割合并两个字符串的函数实例
2015/06/19 PHP
PHP中file_exists使用中遇到的问题小结
2016/04/05 PHP
PHP使用PHPExcel删除Excel单元格指定列的方法
2016/07/06 PHP
Javascript 读后台cookie代码
2008/09/15 Javascript
javascript 鼠标悬浮图片显示原图 移出鼠标后原图消失(多图)
2009/12/28 Javascript
基于JQuery.timer插件实现一个计时器
2010/04/25 Javascript
javascript中的绑定与解绑函数应用示例
2013/06/24 Javascript
javascript和HTML5利用canvas构建猜牌游戏实现算法
2013/07/17 Javascript
DOM 高级编程
2015/05/06 Javascript
js实现仿爱微网两级导航菜单效果代码
2015/08/31 Javascript
完美解决IE不支持Data.parse()的问题
2016/11/24 Javascript
从零学习node.js之搭建http服务器(二)
2017/02/21 Javascript
简单理解Vue中的nextTick方法
2018/01/30 Javascript
Vue 动态添加路由及生成菜单的方法示例
2019/06/20 Javascript
js简单粗暴的发布订阅示例代码
2021/01/23 Javascript
[05:13]TI4 中国战队 机场出征!!
2014/07/07 DOTA
django 使用 request 获取浏览器发送的参数示例代码
2018/06/11 Python
python后端接收前端回传的文件方法
2019/01/02 Python
Python理解递归的方法总结
2019/01/28 Python
解决使用Pandas 读取超过65536行的Excel文件问题
2020/11/10 Python
Python运算符+与+=的方法实例
2021/02/18 Python
Volcom法国官网:美国冲浪滑板品牌
2017/05/25 全球购物
杭州信雅达系统.NET工程师面试试题
2015/02/08 面试题
英文求职信结束语大全
2013/10/26 职场文书
工厂仓管员岗位职责
2014/01/01 职场文书
文明风采获奖感言
2014/02/18 职场文书
绿色城市实施方案
2014/03/19 职场文书
护理目标管理责任书
2014/07/25 职场文书
党员干部反四风对照检查材料思想汇报
2014/09/14 职场文书
辞职信格式范文
2015/05/13 职场文书
假如给我三天光明读书笔记
2015/06/26 职场文书
2016关于学习党章的心得体会
2016/01/15 职场文书
SQLServer2008提示评估期已过解决方案
2021/04/12 SQL Server
详解vue身份认证管理和租户管理
2021/05/25 Vue.js
Python合并多张图片成PDF
2021/06/09 Python