Vue 路由缓存
问题 在路由切换时不需要每次 点击都刷新子路由 尤其是在form表单的情况下 不能让用户 输入一半之后点击其他页面 再点回来 表单数据不见了
解决方案
vue 2.0 之中 有keep-alive 详情 见Vue 官网
<keep-alive>
<router-view :key="key"></router-view>
</keep-alive>
如果想要这个 单个子路由 不刷新 只需要控制 key key值不变 缓存 一直存在 想要路由刷新 将key值 改为 前面没有的
<template>
<section class="app-main">
<transition name="fade" mode="out-in"> <keep-alive>
<router-view :key="key"></router-view>
</keep-alive>
</transition>
</section>
</template> <script>
export default {
name: 'AppMain',
computed: {
key() {
if(this.$route.name==undefined&& this.$route.path=='/home'){
//页面第一次加载时 清空 tab 标签页上的所有标签 回到首页
this.$store.dispatch('delAllViews')
}
let onlykey = ''
let clicked = ''
if(!this.$route.meta.clicked){
onlykey = this.$route.path +"0"
clicked = '0'
}
else{
//上一次的状态为0
if(this.$route.meta.clicked=='0'){
//这一次有参数
if(Object.keys(this.$route.query).length!=0 || this.$route.hash=='#new'){
onlykey = this.$route.path +"1"
clicked = '1'
}
//这一次无参
else{
onlykey = this.$route.path +"0"
clicked = '0'
}
}
//上一次的状态不是0
else{
//这一次有参数
//在创建新活动时 传入 hash = new
if(Object.keys(this.$route.query).length!=0 || this.$route.hash=='#new'){
//这一次的状态 为上一次+1
//获取上一次的状态
clicked = (parseInt(this.$route.meta.clicked)+1).toString();
onlykey = this.$route.path +clicked }
//这一次无参 这一次状态不变
else{
clicked = parseInt(this.$route.meta.clicked).toString();
onlykey = this.$route.path +clicked; }
}
}
this.$route.meta.clicked = clicked;
return onlykey
}
}, }
</script>
代码仅供参考 (业务比较复杂 写了一大推逻辑)!
Vue 路由缓存的更多相关文章
- vue 路由缓存 路由嵌套 路由守卫 监听物理返回
最近开发vue项目,遇到的一些问题,这里整合一下,看到一些博客已经有写相关知识,然后自己再次记录一下. 这是关于vue路由相关比较常见的问题,以后遇到相关路由的问题,会不断更新这篇博客. 需求1:从填 ...
- Vue路由开启keep-alive时的注意点
Vue路由开启keep-alive时的注意点 这个不是业务的要求,但是看到每次进入页面就重新渲染DOM然后再获取数据更新DOM,觉得作为一个前端工程师有必要优化下的加载逻辑,正好vue提供了 ke ...
- vue路由知识整理
vue路由知识整理 对于单页应用,官方提供了vue-router进行路由跳转的处理.我们已经可以通过组合组件来组成应用程序,当你要把 vue-router 添加进来,我们需要做的是,将组件(compo ...
- Vue路由(vue-router)
一.介绍 1.vue-router安装 官方文档:https://router.vuejs.org/zh/installation.html下载地址:https://unpkg.com/vue-rou ...
- Vue路由vue-router
前面的话 在Web开发中,路由是指根据URL分配到对应的处理程序.对于大多数单页面应用,都推荐使用官方支持的vue-router.Vue-router通过管理URL,实现URL和组件的对应,以及通过U ...
- 攻克vue路由
先下手 路由是个好功能,但是每次都感觉没法开始下手,愣愣的看半天官方文档,所以做个快速开始教程. 首先先搭好HTML文件结构: <!--link和view在一个父元素下--> <di ...
- Vue路由学习心得
GoodBoy and GoodGirl~进来了就看完点个赞再离开,写了这么多也不容易的~ 一.介绍 1.概念:路由其实就是指向的意思,当我们点击home按钮时,页面中就要显示home的内容,点击l ...
- VUE路由新页面打开的方法总结
平常做单页面的场景比较多,所以大部分的业务是在同一个页面进行跳转.要通过VUE路由使用新页面打开且传递参数,可以采用以下两个方法: 1.router-link的target <router-li ...
- vue路由参数变化刷新数据
当路由到某个组件时,由于组件会复用,所以生命周期函数不会再次执行, 如果这个组件是模板组件,靠传入不同数据来显示的.那么,可能会发生参数变化了但页面数据却不变化. 问题 假如有个组件 info.vue ...
随机推荐
- C# 调用C++ DLL 的类型转换(转载版)
最近在做视频监控相关的demo开发,实现语言是C#,但视频监控的SDK是C++开发的,所以涉及到C#调用C++的dll库.很多结构体.参数在使用时都要先进行转换,由非托管类型转换成托管类型后才能使用. ...
- minicom 十六进制(hex)显示接收数据
/******************************************************************************** * minicom 十六进制(hex ...
- android logger的使用
1. 进入GitHub页面 https://github.com/orhanobut/logger 2. 在gradle里增加 compile 'com.orhanobut:logger:1.15' ...
- 《DSP using MATLAB》Problem 2.4
生成并用stem函数画出这几个序列. 1.代码: %% ------------------------------------------------------------------------ ...
- [java] java 实现FTP服务器文件的上传和下载
利用Apache commons-net 实现: package com.xwolf.driver.util; import com.xwolf.driver.exception.RunExcepti ...
- 32位汇编基础_cpu 寄存器
32位通用寄存器 EAX EBX ECX EDX EBP ESP ESI EDI 八个寄存器都可以作为普通的数据寄存器使用.但有的有特殊的用途: EAX 为累加器, ECX 为计数器, E ...
- Bootstrap-CSS
ylbtech-Bootstrap-Plugin: 1.返回顶部 1. 2. 2.返回顶部 3.返回顶部 4.返回顶部 5.返回顶部 1. 2. 11.返回顶部 作者:yl ...
- [Android] 开发第五天
布之前开发的 Android 电话拨号器 Android-Studio 已经带了发布菜单, Build -> Generate Signed APK 进入发布界面 我们新增一个证书,或者使用已有 ...
- 1027代码审计平台 1-sonar scanner
1.代码审计 1.1综合性的代码分析平台 sonar支持自定义规则,较多的公司使用 360火线 1.2IDE辅助功能 Xcode.Android studio 阿里巴巴Java开发手机ide插件支持 ...
- 十一.jQuery源码解析之.pushStack()
pushStack()顾明思意,就是像桟中添加东西呗,现在看看他是如何添加东西的. 创建一个空的jQuery对象,然后把Dom元素集合放入这个jQuery对象中, 并保留对当前jQuery对象的引用. ...