• vue路由传参(比较完整的方法记录)


    一、背景

    在进行vue开发的时候会涉及到一个问题,就是我们需要对路由进行静态处理,如下面两种情况,可以跳到目标页面:

    1. url中直接带上url类型(path/param)
    http://localhost:8080/#/movieDetail/123
    
    2. 请求参数类型(path/?query)
    http://localhost:8080/#/movieDetail?movieId=123

    二、方法

    使用下面的方法对跳转路由传参

    2.1 路由配置

    在index.js路由的的配置参数,按照下面的方法配置路由,包括上述提到的两种方式。

    2.1.1 path/param

    对于path/param这样的路由,使用下面的方法进行配置,在path之后带上:param就可以获取到参数并转化成对应的参数。

    {
      path: '/movieDetail/:movieId',
      name: "movieDetail",
      component: movieDetail,
    },

    截图:

    2.1.2 path/?query

    对于path?query这样的路由,使用下面的方法来获取参数,由于是query请求,因此不需要将参数构建在路由上。

    {
      path: '/movieDetail',
      name: "movieDetail",
      component: movieDetail,
    },

    截图:

    2.2  路由使用

    在需要的地方使用router-link

    2.2.1 path/param

    在需要跳转的地方使用router-link进行界面的跳转

    1. 使用to直接构建跳转路由
    <router-link :to="'/movieDetail/'+132"></router-link>
    2.使用path的参数跳转路由
    <router-link :to="{path:'/movieDetail/'+123}"></router-link>
    3.使用name和params实现路由跳转
    <router-link :to="{name:'movieDetail', params:{movieId:123}}"></router-link>
    (注意movieId必须和路由中的参数保持一致,才可以展示出来)

    2.2.2 path/?query

    使用以下的方法完成路由的跳转传参

    1. 使用to直接构建跳转路由
    <router-link :to="'/movieDetail'+'?movieId=123'"></router-link>
    2.使用path的参数跳转路由
    <router-link :to="{path:'/movieDetail'+'?movieId=123'}"></router-link>
    3.使用name和query实现路由跳转
    <router-link :to="{name:'movieDetail', query:{movieId:123}}"></router-link>
    4.使用path和query实现路由跳转
    <router-link :to="{path:'/movieDetail', query:{movieId:123}}"></router-link>

    2.3 路由解析

    跳转到目的路由之后将进行路由的解析。路有对象有以下的两种:

    this.$route //只读、具备信息的对象
    this.$router //具备功能的函数
    
    // 因此使用this.$route进行路由解析
    // 解析path/params的路由参数
    console.log(this.$route.params);
    //  解析path?query的路由参数
    console.log(this.$route.query);

    三、总结

    3.1 构建需要

    根据使用的方法,如果是是下面例子中(1)的配置就无法使用path/param,如果按照(2)的配置就可以

    (1)这种请求方式无法构造出path/params的路由方式
    {
        path: '/movieDetail',
        name: "movieDetail",
        component: movieDetail,
    },
    
    (2)这种请求方式,可以构造path/params也可以使用到
    {
        path: '/movieDetail/:movieId',
        name: "movieDetail",
        component: movieDetail,
    },

    3.2 name和path的区别

    1.相同
    都可以用于构建路由,实现路由跳转
    2.不同
    (1)path实现path/params的方式只有to或者path+params的方式,不能够使用params参数,而name可以使用params。
    (2)path会忽略params,name不会,可以使用query和params;构造更灵活。

    3.3 路由构建的方式

    1. 字符串
    直接构建简单路由,但是构建复杂的路由不够灵活,如query的请求
    
    2. name+query/params
    可以使用params和query两种数据传参的方式。
    params在path/params时会将传过来的值解析到路由中。构建params的方法。
    query会存在router的对象中,会将结果以get的方式作为路由。构建query的方法。
    构造方式灵活,对于路由的配置要求也不限制,在有无参数的情况下都可以构造出需要的路由。
    
    3. path
    直接构建跳转的路由,能构建path?query的动态请求,也能够构建path/params的动态请求。
    但是对于路由的设置要求严格,如果没有设置path/params的情况就不会出现结果跳转。name不会影响。

    3.4 路由构建推荐

    对于path/param的路由直接使用str+param的方式

    对于path?query的路由使用path+query的参数构建

    四、参考

    关于路由传参的内容较多,这篇做了一个总结。

    详细介绍:https://blog.csdn.net/qq_35393869/article/details/80251099

    简单使用:https://www.jianshu.com/p/537fa412cf01

  • 相关阅读:
    vmware12中安装MAC OS X 10.10
    AOL search
    [python]错误检测及异常处理try-except
    [推荐]
    [python]打开文件操作open用法
    MAC使用小技巧
    [推荐]
    [python]python中的if, while, for
    [python]python字典
    [python]python列表、元组
  • 原文地址:https://www.cnblogs.com/future-dream/p/14619248.html
Copyright © 2020-2023  润新知