• 路由之间的转跳及传参


    跳转

    路由之间的转跳可以通过两种方式实现:

    1、通过官方提供的router-link标签实现,它与a标签相似,给我们提供跳转到某个路由的功能。

    用法:

    "路由网址/x">点击跳转到/x

    to属性就好比a标签的href属性。

    其中to属性的值可以是就是字符串网址,也可以是对象的形式,如:

    "{path:"/x"}">点击跳转到/x

     

    2、编程式转跳,通过vue对象的原型上的$router对象的push方法,$router对象是我们配置路由插件时,Vue.use(VueRouter)给vue对象的原型添加的,在任何组件中都可以直接使用。

    用法:值也是两种写法,直接写网址或者写在对象中

    1. this.$router.push("/x")
    2. this.$router.push({path:"/x"})

    演示一下

    注册三个路由:

    1. import Vue from "vue";
    2. import VueRouter from "vue-router"
    3. //给组件的原型链绑定功能
    4. Vue.use(VueRouter)
    5. //注册路由
    6. const routes=[
    7. {
    8. path:"/",
    9. name:"home",
    10. component:()=>import('../views/home/index.vue')
    11. },{
    12. path:"/login",
    13. name:"login",
    14. component:()=>import('../views/login/index.vue')
    15. },
    16. {
    17. path:"/register",
    18. name:"register",
    19. component:()=>import('../views/register/index.vue')
    20. }
    21. ]
    22. //配置路由规则
    23. const router = new VueRouter({
    24. mode: 'history',
    25. routes
    26. })
    27. //导出
    28. export default router

    在对应目录下创建三个组件文件。

    home路由对应组件中,添加转跳代码:

    1. <script>
    2. export default{
    3. methods: {
    4. rto(){
    5. this.$router.push({path:'/register'})
    6. }
    7. },
    8. }
    9. script>
    10. <style>
    11. .box3{
    12. width: 200px;
    13. height: 200px;
    14. background-color: hotpink;
    15. }
    16. style>

    页面效果:

     点击第一个转跳到login路由,点击第二个转跳到register路由。

    传参

    传参的方法也是有两种:query传参和params动态路由传参

    1、query传参

    query传参是把参数放在网址的querystring字段中,对应路由转跳有四种写法那么传参时也有四种写法,如:

    //直接拼接到to属性的属性值中,用?拼接

    <router-link to="路由网址/x?参数1=aa,参数2=bbb,....">点击跳转到/x

    //router-link标签,to属性值为对象形式时

    点击跳转到/x

    //$router.push()方法字符串写法

    this.$router.push("/x?参数1=aa,参数2=bbb")

    //$router.push()方法对象写法
    this.$router.push({path:"/x",query:{参数1:'aa',参数2:'bbb'}})

    在转跳后的路由中,在created钩子函数运行后,通过this.$route.query就可以获得传来的参数

    2、params动态路由传参

    动态路由传参就是把参数放在网址的pathname中,相比于query传参它还需要在注册路由时在需要接收参数的那个路由的path的属性中加一个变量用于接收参数调用,如:

    1. {
    2. path:"/login/:msg",
    3. name:"login",
    4. component:()=>import('../views/login/index.vue')
    5. }

    这里的msg设置了才能够动态传参,注意一定要加上:,不然接收不到;在created钩子函数运行后,通过this.$route.params就可以获得传来的参数,这时获得的值是一个对象,属性名为我们设置msg,值为我们传递的参数。

    演示一下,我们已经login路由的网址中设置了msg,我们在home组件中传一个值过去,代码:

    login组件中添加一个mounted钩子函数打印一下传来的值:

    1. <script>
    2. export default{
    3. mounted() {
    4. console.log(this.$route.params);
    5. },
    6. }
    7. script>

    点击转跳后页面效果:

    动态传参时也有四种写法,如:

    //直接写在网址中

    login

    //对象形式,不用写网址了,而是写路由的name;msg为我们注册时设定的变量,设定的什么这里就写什么
    news

    //$router.push方法直接写网址
    this.$router.push("/login/参数")

    //对象形式
    this.$router.push({name:"login",params:{msg:参数}})

  • 相关阅读:
    Spring 常用注解
    【ML】K-Means 聚类
    基于FPGA的智能小车系统
    【DAY04 软考中级备考笔记】数据结构基本结构和算法
    Ansible role
    如何实现两栏布局,右侧自适应?三栏布局,中间自适应?
    聊聊Go与依赖注入
    如何杜绝聊天泄密事件的发生呢(企业如何管理通讯工具,防止员工聊天泄密)
    React之组件实例的三大属性之props
    PHP集成环境XAMPP中Apache无法启动问题解决方案
  • 原文地址:https://blog.csdn.net/m0_59345890/article/details/126800834