Vue Router replace 编程式导航 缓存路由组件

6.9.路由跳转的 replace 方法

  1. 作用:控制路由跳转时操作浏览器历史记录的模式
  2. 浏览器的历史记录有两种写入方式:pushreplace
    1. push是追加历史记录
    2. replace是替换当前记录,路由跳转时候默认为push方式
  3. 开启replace模式
    1. <router-link :replace=“true” …>News</router-link>
    2. 简写<router-link replace …>News</router-link>

总结:浏览记录本质是一个栈,默认push,点开新页面就会在栈顶追加一个地址,后退,栈顶指针向下移动,改为replace就是不追加,而将栈顶地址替换

src/pages/Home.vue

<template><div><h2>我是Home的内容</h2><div><ul class="nav nav-tabs"><li><router-link replace class="list-group-item" active-class="active" to="/home/news">News</router-link></li><li><router-link replace class="list-group-item" active-class="active" to="/home/message">Message</router-link></li></ul><router-view></router-view></div></div>
</template><script>export default {name: "Home",beforeDestroy() {console.log("Home组件即将被销毁了");},mounted() {console.log("Home组件挂载完毕了", this);}}
</script>

6.10. 编程式路由导航(不用<router-link>)

作用:不借助<router-link>实现路由跳转,让路由跳转更加灵活

this.$router.push({}) 内传的对象与<router-link>中的to相同

this.$router.replace({})

this.$router.forward() 前进

this.$router.back() 后退

this.$router.go(n) 可前进也可后退,n为正数前进n,为负数后退

this.$router.push({ name:'detail', params:{ id:xxx, title:xxx } 
})this.$router.replace({ name:'detail', params:{ id:xxx, title:xxx }
})

在这里插入图片描述

src/components/Banner.vue

<template><div class="col-xs-offset-2 col-xs-8"><div class="page-header"><h2>Vue Router Demo</h2><button @click="back">后退</button><button @click="forward">前进</button><button @click="test">测试一下go</button></div></div>
</template><script>export default {name: "Banner",methods: {back(){this.$router.back();},forward(){this.$router.forward();},test(){this.$router.go(-2);}}}
</script>

src/pages/Message.vue

<template><div><ul><li v-for="m in messageList" :key="m.id"><!-- 跳转并携带params参数,to的字符串写法 --><!-- <router-link :to="`/home/message/detail/${m.id}/${m.title}`"> {{m.title}} </router-link> --><!-- 跳转路由并携带params参数,to的对象写法 --><router-link :to="{name:'detail',params:{ id:m.id, title:m.title }}">{{m.title}}</router-link><button @click="showPush(m)">push查看</button><button @click="showReplace(m)">replace查看</button></li></ul><hr/><router-view></router-view></div>
</template><script>export default {name: "Message",data() {return {messageList:[{id:'001',title:'消息001'},{id:'002',title:'消息002'},{id:'003',title:'消息003'}]}},methods:{showPush(m){this.$router.push({name:'detail',params:{id:m.id,title:m.title}})},showReplace(m){this.$router.replace({name:'detail',params: {id:m.id,title:m.title}})}}}
</script>

6.11.缓存路由组件

作用:让不展示的路由组件保持挂载,不被销毁

<keep-alive include=“News”><router-view></router-view></keep-alive>

<keep-alive :include=“[‘News’, ‘Message’]”><router-view></router-view></keep-alive>

// 缓存一个路由组件 
<keep-alive include="News"> // include中写想要缓存的组件名,不写表示全部缓存 <router-view></router-view> 
</keep-alive>// 缓存多个路由组件 
<keep-alive :include="['News','Message']"> <router-view></router-view> 
</keep-alive>

在这里插入图片描述

src/pages/News.vue

<template><ul><li>news001</li><li>news002</li><li>news003</li></ul>
</template><script>export default {name: "News"}
</script>

src/pages/Home.vue

<template><div><h2>我是Home的内容</h2><div><ul class="nav nav-tabs"><li><router-link replace class="list-group-item" active-class="active" to="/home/news">News</router-link></li><li><router-link replace class="list-group-item" active-class="active" to="/home/message">Message</router-link></li></ul><router-view></router-view></div></div>
</template><script>export default {name: "Home",beforeDestroy() {console.log("Home组件即将被销毁了");},mounted() {console.log("Home组件挂载完毕了", this);}}
</script>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/4469.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

创业书籍推荐,这些书经商必读

对于许多想要创业的人来说&#xff0c;成功的关键在于掌握正确的知识和技能。虽然创业的实际经验是无可替代的&#xff0c;但是通过阅读经验丰富的人士写的书籍&#xff0c;可以提前了解创业、经商过程中可能遇到的挑战&#xff0c;并为成功奠定基础。在这篇文章中&#xff0c;…

CPU acceleration status: KVM requires a CPU that supports vmx or svm

关闭虚拟机&#xff0c;选择处理器将虚拟化引擎第一个选项选上&#xff0c;重新打开虚拟机&#xff0c;进行编译打开模拟器。 source build/envsetup.shlunch aosp_x86_64-engemulator

数据结构--队列的顺序实现

数据结构–队列的顺序实现 队列的顺序存储代码定义 #define MaxSize 10 //定义队列中元素最大个数 typedef struct {ElemType data[MaxSize]; //静态数组存放队列元素int front, rear; //对头指针 & 队尾指针 } SqQueue; 初始化操作 void InitQueue(SqQueue &Q) {Q.r…

C# Excel表列名称

168 Excel表列名称 给你一个整数 columnNumber &#xff0c;返回它在 Excel 表中相对应的列名称。 例如&#xff1a; A -> 1 B -> 2 C -> 3 … Z -> 26 AA -> 27 AB -> 28 … 示例 1&#xff1a; 输入&#xff1a;columnNumber 1 输出&#xff1a;“A”…

ChatGPT 和爬虫有什么区别?

ChatGPT是一种基于人工智能的对话模型&#xff0c;它通过训练大量的文本数据来生成自然语言回复。它可以用于实现智能对话系统&#xff0c;能够理解用户的输入并生成相应的回复。ChatGPT的目标是模拟人类对话&#xff0c;使得对话更加流畅和自然。 而爬虫是一种用于自动化地从…

36.SpringBoot实用篇—运维

目录 一、实用篇—运维。 &#xff08;1&#xff09;程序打包与运行&#xff08;Windows版&#xff09;。 &#xff08;2&#xff09;spring-boot-maven-plugin插件作用。 &#xff08;3&#xff09;程序打包与运行&#xff08;Linux版&#xff09;。 &#xff08;4&#…

Vue3对于一个前端来讲意味着什么?

最近很多技术网站&#xff0c;讨论的最多的无非就是Vue3了&#xff0c;大多数都是Composition API和基于Proxy的原理分析。但是今天想着跟大家聊聊&#xff0c;Vue3对于一个低代码平台的前端更深层次意味着什么&#xff1f; 首先&#xff0c;Vue是前端三大主流框架之一&#xf…

jedis使用,操作Redis数据库2

在刚刚ping通的基础上,再来通过jedis连接池连接redis 在resources下创建redis.properties配置文件,在配置文件中写如下内容 # 必配 # Redis服务器地址(域名或IP) redis.host192.168.40.100 # Redis服务器连接端口(Redis默认端口号是6379) redis.port6379 # Redis服务器连接密码…

Redis实战篇(三)

四.分布式锁 4.1.分布式锁概述 分布式锁&#xff1a;满足分布式系统或集群模式下多进程可见并且互斥的锁。分布式锁的核心思想就是让大家都使用同一把锁&#xff0c;只要大家使用的是同一把锁&#xff0c;那么我们就能锁住线程&#xff0c;不让线程并行&#xff0c;让程序串行…

Use ELK with Django Log

What is ELK? The ELK Stack is a collection of three open source products: ElasticsearchLogstashKibana When to use ELK? ELK is designed to allow us to take data from any source, in any format, and to search, analyze, visualize data in real time. At t…

Es索引中时间字段是字符串Range查询的正确姿势

文章目录 [toc] 1. 问题2. Es索引的mapping模式2.1 dynamic动态宽松模式&#xff08;动态映射&#xff09;2.2 strict严格模式&#xff08;静态映射&#xff09; 3. text类型和keyword类型的区别3.1 text类型3.2 keyword类型 4.正确姿势5. 总结 1. 问题 由于之前搞了一个使用fl…

panda3d 模型转换命令复习学习

在此学习了把maya模型转换为panda3d的egg格式&#xff1b; 在Panda3d中转换Maya模型为egg格式并使用pview查看_panda3d egg文件浏览器_bcbobo21cn的博客-CSDN博客 下面继续看一下模型转换命令&#xff1b;列出带 egg 字符串的命令&#xff1b; 先复习一下&#xff0c;可以把m…