路由器的replace属性和编程式路由导航

举报
一向很安静 发表于 2022/02/28 15:53:20 2022/02/28
【摘要】 在本篇中我会和大家讲解一下路由对我们浏览器历史记录的影响和编程式路由导航,先说说这个浏览器的历史记录正常来说我们在每次点击跳转都会进入新的记录里面就比如:![image.png](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/583ef2cff1034c6cb194a625cf4bed5f~tplv-k3u1fbpfcp-watermar...

在本篇中我会和大家讲解一下路由对我们浏览器历史记录的影响和编程式路由导航,先说说这个浏览器的历史记录正常来说我们在每次点击跳转都会进入新的记录里面就比如:


![image.png](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/583ef2cff1034c6cb194a625cf4bed5f~tplv-k3u1fbpfcp-watermark.image?)

在每一次点击浏览器都对我们的跳转进行记录像图中就像是栈的结构,浏览器记录就像是用push的方式进行添加。所以呢路由中就有一个属性就取消这种浏览器的默认行为就是通过```replace```属性来替换当前记录。

![image.png](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/d88f70ab9b6640ed8f67d110f47f76ae~tplv-k3u1fbpfcp-watermark.image?)
进行一下关于这个的总结:
### ```<router-link>```的replace属性

1. 作用:控制路由跳转时操作浏览器历史记录的模式
2. 浏览器的历史记录有两种写入方式:分别为```push```和```replace```,```push```是追加历史记录,```replace```是替换当前记录。路由跳转时候默认为```push```
3. 如何开启```replace```模式:```<router-link replace .......>News</router-link>```

```js
<router-link :replace="true" to="/home/News">News</router-link>
简写:
<router-link replace to="/home/News">News</router-link>
```


接下来我就和大家讲讲全新的路由跳转方式就是编程式路由导航的相关内容了,在之前写的都是通过router-link标签进行的跳转,在这里呢我会放弃所以这个标签,下面就由我来说到说到:


```js
<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>&nbsp;&nbsp; -->

                <!-- 跳转路由并携带params参数,to的对象写法 -->
                <router-link :to="{
                    name:'xiangqing',
                    query:{
                        id:m.id,
                        title:m.title
                    }
                }">
                    {{m.title}}
                </router-link>
                <button @click="pushShow(m)">push查看</button>
                <button @click="replaceShow(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: {
            pushShow(m){
                this.$router.push({
                    name:'xiangqing',
                    query:{
                        id:m.id,
                        title:m.title
                    }
                })
            },
            replaceShow(m){
                this.$router.replace({
                    name:'xiangqing',
                    query:{
                        id:m.id,
                        title:m.title
                    }
                })
            }
        },
    }
</script> 
```


### 编程式路由导航

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

2. 具体编码:

   ```js
   //$router的两个API 
   this.$router.push({
       name:'xiangqing',
           params:{
               id:xxx,
               title:xxx
           }
   })
   
   this.$router.replace({
       name:'xiangqing',
           params:{
               id:xxx,
               title:xxx
           }
   })
   this.$router.forward() //前进
   this.$router.back() //后退
   this.$router.go() //可前进也可后退
   ```
   
   在这里给大家讲一个小功能,这个功能呢就是控制浏览器历史记录的模式的
   

【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。