Vue路由导航(replace、push、forward、back、go)

这篇具有很好参考价值的文章主要介绍了Vue路由导航(replace、push、forward、back、go)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Vue路由导航(replace、push、forward、back、go)

先了解栈结构,再学习以下内容

Vue路由导航(replace、push、forward、back、go),Vue,vue.js,前端,前端框架,javascript

  • 栈的数据结构:先进后出,后进先出。
  • 原理:push将元素压入栈内,pop将元素弹出,栈有分别有栈底指针和栈顶指针,指向栈内最低和最高的元素。

replace和push属性的原理

Vue路由导航(replace、push、forward、back、go),Vue,vue.js,前端,前端框架,javascript

Vue路由导航(replace、push、forward、back、go),Vue,vue.js,前端,前端框架,javascript

  • 浏览器中的前进和后退的按钮也是使用了栈的数据结构实现,但也有不同。对于浏览器而言,分别有两种属性:
    • push属性(推进):以叠加的方式进行入栈操作。
    • replace属性(替换):以替换栈顶元素的方式进行入栈操作。
    • 注意1:不管有没有使用其他属性的,浏览器默认添加push属性。(仅在声明式中使用,以下会讲。)
    • 注意2:不管使用哪种属性进行操作,浏览器都不会删除原有的浏览记录,只会更改指针的指向。

replace和push属性的’声明式’路由导航和’编程式’路由导航

replace和push属性的’声明式’路由导航

  • 注意事项:
    • 不管有没有使用其他属性的,浏览器默认添加push属性,所以写不写push属性都会使用。(以下是replace属性)
    • 声明式适合用于点击超链接转换路由的方式
    • query和params都可以使用
  • replace属性两种格式:<router-link :replace="true"><router-link replace>(简写)
<template>
    <div>
        <h2>A</h2>
        <div>
            <ul>
                <li>
                    <!-- 声明式路由导航 -->
                    <router-link :replace="true" :to="{
                        name : 'ac',
                        params : {
                            a1 : a[0],
                            a2 : a[1],
                            a3 : a[2]
                        }
                    }" >
                        A1 Router-Link
                    </router-link>
                </li>
                <li>
                    <router-link replace :to="{
                        name : 'ad',
                        params : {
                            a1 : b[0],
                            a2 : b[1],
                            a3 : b[2]
                        }
                    }" >
                        A2 Router-Link
                    </router-link>
                </li>
            </ul>
        </div>
        <router-view></router-view>
    </div>
</template>

<script>
    export default {
        name : 'A',
        data(){
            return{
                a : ['111', '222', '333'],
                b : ['444', '555', '666']
            }
        }
    }
</script>

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

  • 注意事项:
    • 编程式适合用于点击按钮转换路由的方式
    • 编程式跟声明式不同,编程式可以使用相关的API来完成
    • query和params都可以使用
// push属性的格式
// $router:多组件共享的路由器对象。
this.$router.push({
    name : '',
    query or params : {}
}, ()=>{}, ()=>{})
// replace属性的格式
// $router:多组件共享的路由器对象。
this.$router.replace({
    name : '',
    query or params : {}
},  ()=>{}, ()=>{})
  • 解释()=>{}, ()=>{}
    • 不使用()=>{}, ()=>{}的情况:在编程式反复执行push和replace属性浏览器控制台会出现以下图片情况

    • Vue路由导航(replace、push、forward、back、go),Vue,vue.js,前端,前端框架,javascript

    • 原因:在使用push和replace属性时,会传递两个回调函数,一个是成功回调,一个是失败回调。如果没有传递回调函数,则就会出现报错的情况,在后面加上()=>{}, ()=>{}就好了。文章来源地址https://www.toymoban.com/news/detail-738477.html

<template>
    <div>
        <h2>A</h2>
        <div>
            <ul>
                <li>
                    <button @click="goA1">A1 Button</button>
                </li>
                <li>
                    <button @click="goA2">A2 Button</button>
                </li>
            </ul>
        </div>
        <router-view></router-view>
    </div>
</template>

<script>
    export default {
        name : 'A',
        data(){
            return{
                a : ['111', '222', '333'],
                b : ['444', '555', '666']
            }
        },
        methods : {
            goA1(){
                // 编程式路由导航
                // $router:多组件共享的路由器对象。
                this.$router.push({
                        name : 'ac',
                        params : {
                            a1 : this.a[0],
                            a2 : this.a[1],
                            a3 : this.a[2]
                        }
                    }, ()=>{}, ()=>{})
            },
            goA2(){
                this.$router.replace({
                    name : 'ad',
                    params : {
                        a1 : this.b[0],
                        a2 : this.b[1],
                        a3 : this.b[2]
                    }
                },  ()=>{}, ()=>{})
            }
        }
    }
</script>

forward、back和go的’编程式’路由导航

  • forward:前进,this.$router.forward()
  • back:后退,this.$router.back()
  • go:前进几步、后退几步,this.$router.go()
    • 括号内为正数表示前进,负数表示后退,数字表示几步
// App.vue
<template>
    <div>
        <button @click="forward">前进</button>
        <button @click="back">后退</button>
        <button @click="forwardFive">前进5</button>
        <button @click="backFive">后退5</button>
    </div>
</template>

<script>
    export default {
        name : 'App',
        methods : {
            forward(){
                this.$router.forward()
            },
            back(){
                this.$router.back()
            },
            forwardTwo(){
                this.$router.go(5)
            },
            backTwo(){
                this.$router.go(-5)
            }
        }
    }
</script>
k()
            },
            forwardTwo(){
                this.$router.go(5)
            },
            backTwo(){
                this.$router.go(-5)
            }
        }
    }
</script>

到了这里,关于Vue路由导航(replace、push、forward、back、go)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Vue2-replace属性、编程式路由导航、缓存路由组件、两个新的生命周期钩子、路由守卫、路由器工作模式

    🥔:如果事与愿违,那一定是上天另有安排 更多Vue知识请点击——Vue.js 1.作用:控制路由跳转时操作浏览器历史记录的模式 2.浏览器的历史记录有两种写入方式:分别为 push 和 replace , push是追加历史记录,replace是替换当前记录 。路由跳转时候 默认为push 3.如何开启replace模

    2024年02月10日
    浏览(17)
  • 编程式导航、缓存路由组件、路由守卫、Vue UI组件库【VUE】

    作用:不借助 router-link 实现路由跳转,让路由跳转更加灵活 具体编码: 作用:让不展示的路由组件保持挂载,不被销毁 具体编码: 作用:路由组件所独有的两个钩子,用于捕获路由组件的激活状态。 具体名字: (1)activated路由组件被激活时触发 (2)deactivated路由组件失

    2024年02月03日
    浏览(16)
  • Vue中的路由导航

    声明式路由导航 router官网-起步 声明式路由导航其实就是使用官方给的router-link路由导航标签直接进行路由跳转 编程式路由导航 router官网-编程式路由导航 除了使用 创建 a 标签来定义导航链接,我们还可以借助 router 的实例方法,通过编写代码来实现

    2023年04月23日
    浏览(18)
  • Vue-路由-声明式导航

    vue-router 提供了一个全局组件 router-link (取代 a 标签) 能跳转,配置 to 属性指定路径(必须) 。本质还是 a 标签 ,to 无需 # 能高亮,默认就会提供高亮类名,可以直接设置高亮样式 如: 我们发现 router-link 自动给当前导航添加了 两个高亮类名 router-link-active:模糊匹配 (用的多

    2024年01月17日
    浏览(26)
  • React/Vue实现路由鉴权/导航守卫/路由拦截

    1、实现思路 自己封装  AuthRoute  路由鉴权高阶组件,实现未登录拦截,并跳转到登录页面 思路为:判断本地是否有token,如果有,就返回子组件,否则就重定向到登录Login 2、实现步骤 在 components 目录中,创建 AuthRoute/index.js 文件 判断是否登录 登录时,直接渲染相应页面组

    2024年02月15日
    浏览(14)
  • Vue--》深入理解 Vue 3 导航守卫,掌握前端路由的灵魂技能!

    目录 vue3导航守卫讲解与使用 element-ui的安装与使用 配置路由和设置路径别名

    2024年02月05日
    浏览(21)
  • Vue3项目-配置路由及侧边栏导航栏

    1.在views 文件夹中创建文件夹 并在其中一个文件夹中创建一个vue文件  因为 没有配置TS 因此script 后面没有跟lang=\\\"ts\\\"  例如 下图所示      2.在router文件夹下面index文件中  routes数组添加重定向  其中某对象中添加 children 属性 配置 二级路由 并关联上想要链接的页面  compon

    2024年02月09日
    浏览(13)
  • 路由缓存问题 | vue-router的导航守卫

             带参路由,当 参数发生变化时,相同的组件实例将被复用 ,组件的 生命周期钩子不会被调用, 导致 请求不会被重新发送, 以至于 数据无法更新 。 两种解决方法: 1. 给 RouterView绑定key值 ,即 特点:不复用,破坏组件缓存,强制执行,存在一定的 浪费 ,即

    2024年02月09日
    浏览(12)
  • 20230706----重返学习-vue路由导航守卫相关-物美后台管理系统

    常见面试题 面试题:介绍一下 vue-router 中的导航守卫函数 面试题:介绍一下你对vue-router的理解? 导航守卫函数 面试题:介绍一下 vue-router 中的导航守卫函数 在每一次路由切换的时候,首先把路由匹配、导航确认等事宜先处理好-在此期间会触发一系列的钩子函数,这些函数

    2024年02月12日
    浏览(19)
  • 【Vue.js】使用Element中的Mock.js搭建首页导航&左侧菜单---【超高级教学】

          Mock.js是一个用于前端开发中生成随机数据、模拟接口响应的 JavaScript 库。模拟数据的生成器,用来帮助前端调试开发、进行前后端的原型分离以及用来提高自动化测试效率 总结来说,Element中的Mock.js是一个用于前端开发中生成随机数据、模拟接口响应的库。它可以帮助

    2024年02月07日
    浏览(15)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包