vue如何通过点击事件实现页面跳转详解

 更新时间:2022年07月10日 10:05:47   作者:疯狂的小强呀  
页面跳转,我们一般都通过路由跳转实现,通常情况下可直接使用router-link标签实现页面跳转,下面这篇文章主要给大家介绍了关于vue如何通过点击事件实现页面跳转的相关资料,需要的朋友可以参考下

前言

页面跳转,我们一般都通过路由跳转实现,通常情况下可直接使用router-link标签实现页面跳转,但是如果我们想通过点击别的标签实现页面跳转,怎么办呢?这个时候我们就要用到this.$router.push()方法,下面来给大家简单介绍一下使用!

this.$router.push()

1.首先我们要定义一个点击事件

2.在定义事件中调用this.$router.push()方法

<template>
    <button @click = "handle">点击跳转</button>
</template>
<script>
    export default{
        methods:{
            handle (){
            //  路径/home对应我在router目录下index.js中定义的path属性值
                this.$router.push('/home');
            }
        }
    }
</script>

目标跳转页面路由在router目录下index.js定义如下:

export default new Router({
  routes: [
    {
      path: '/home',
      name:'Home',
      component: Home,
    },
 ]
})

this.$router.push()中的参数规则

参数为字符串,即路径名称

//  路径/home对应router目录下index.js中定义的path属性值
this.$router.push('/home');

参数为对象

//  对应router目录下index.js中定义的path
this.$router.push({path:'/home'});

参数为路由命名

//  对应router目录下index.js中定义的name
this.$router.push({name:'Home'});

带传递参数

// params里面放置的是我们要传递过去的参数
this.$router.push({name:'Home',params:{user:'david'}});

带查询参数

// 带查询参数,传递过去的内容会自动拼接变成/home?user=david
this.$router.push({path:'/home',query:{user:'david'}});

参数的接收

当我们使用params进行传参时,只需在接收参数的地方使用this.$route.params进行接收即可

eg:

//传参
this.$router.push({name:'Home',params:{user:'david'}});

// 在name为Home的组件中接收参数
const id=this.$route.params.id;
console.log(this.$route.params);//打印结果为{user:'david'}

当我们使用query传参时,只需在接收参数的地方使用this.$route.query进行接收即可,用法同上

!!!这里有一个小细节:$符号后面跟的是route不是router,跳转的时候 $后面跟的是router!!!

注意

  • query传参的参数会带在url后边展示在地址栏(/home?user=david),params传参的参数不会展示到地址栏
  • 由于动态路由也是传递params的,所以在 this.$router.push() 方法中path不能和params一起使用,否则params将无效,需要用name来指定页面
  • 我们也可以用this.$router.replace()来实现页面跳转,二者的区别是push跳转之后可以通过浏览器的回退键回到原来的页面,而一旦使用replace跳转之后,无法回到原来页面

补充:VUE实现从一个页面跳转到另一个页面的指定位置

例如,从网站的首页点击跳转到指定页面的底部。

首页 home

<div @click="toPath('/targetPage#target')">
    <p>点击跳转</p>
</div>
methods:{
    //点击跳转方法
    toPath(path) {
        this.$router.push({path: path})
    }
}

跳转到的页面 targetPage

<div class="location" id="target">
    <p>指定位置</p>
</div>
//在mounted里
mounted() {
    var hash = window.location.hash;
    var index = hash.lastIndexOf("#");
    if (index != -1) {
       var id = hash.substring(index + 1, hash.length + 1);
       var div = document.getElementById(id);
       if (div) {
         setTimeout(function () {
           console.log($(div).offset().top);
           $('html, body').animate({scrollTop: $(div).offset().top - 43}, 500)
         }, 500);
       }
    }
}

亲测有效 :D

总结

到此这篇关于vue如何通过点击事件实现页面跳转的文章就介绍到这了,更多相关vue点击事件实现页面跳转内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 解决Ant Design Modal内嵌Form表单initialValue值不动态更新问题

    解决Ant Design Modal内嵌Form表单initialValue值不动态更新问题

    这篇文章主要介绍了解决Ant Design Modal内嵌Form表单initialValue值不动态更新问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-10-10
  • Vue使用axios进行数据异步交互的方法

    Vue使用axios进行数据异步交互的方法

    大家都知道在Vue里面有两种出名的插件能够支持发起异步数据传输和接口交互,分别是axios和vue-resource,同时vue更新到2.0之后,宣告不再对vue-resource更新,而是推荐的axios,今天就讲一下怎么引入axios,需要的朋友可以参考下
    2024-01-01
  • vue获取当前激活路由的方法

    vue获取当前激活路由的方法

    下面小编就为大家分享一篇vue获取当前激活路由的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-03-03
  • vue2左侧菜单栏收缩展开功能实现

    vue2左侧菜单栏收缩展开功能实现

    vue2左侧菜单栏收缩展开目前是非常常见的,我们在日常开发过程中经常会碰到,这篇文章给大家介绍vue2左侧菜单栏收缩展开功能,感兴趣的朋友跟随小编一起看看吧
    2024-04-04
  • 解决vue报错'超出最大堆栈大小'问题

    解决vue报错'超出最大堆栈大小'问题

    这篇文章主要介绍了解决vue报错'超出最大堆栈大小'问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-04-04
  • vue中的计算属性和侦听属性

    vue中的计算属性和侦听属性

    这篇文章主要介绍了vue中的计算属性和侦听属性,帮助大家更好的理解和学习vue框架的使用,感兴趣的朋友可以了解下
    2020-11-11
  • vue中渲染对象中属性时显示未定义的解决

    vue中渲染对象中属性时显示未定义的解决

    这篇文章主要介绍了vue中渲染对象中属性时显示未定义的解决,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-07-07
  • 详解Vue中如何进行状态持久化

    详解Vue中如何进行状态持久化

    在Vue应用中,通常需要将一些状态进行持久化,以便在用户关闭浏览器或刷新页面后,常见的方法就是LocalStorage和SessionStorage,所以本文就来讲讲这两种方法的具体实现吧
    2023-06-06
  • vue项目使用.env文件配置全局环境变量的方法

    vue项目使用.env文件配置全局环境变量的方法

    这篇文章主要介绍了vue项目使用.env文件配置全局环境变量的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-10-10
  • Vue中img的src是动态渲染时不显示的解决

    Vue中img的src是动态渲染时不显示的解决

    今天小编就为大家分享一篇Vue中img的src是动态渲染时不显示的解决,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-11-11

最新评论