首页 > 其他分享 >VUE路由传参的实用方式

VUE路由传参的实用方式

时间:2023-06-07 20:23:37浏览次数:34  
标签:传参 about VUE query 跳转 path id 路由

本文讲解了VUE项目中路由之间的传值方式,涉及到的方法都是开发时常用的,希望对大家有多帮助。

1. 方式一:使用router-link标签 

1.1 params 传参

  • 首先定义好路由
    const routes = [
        { path :  ‘/home’ , component : () => import(‘/../views/home.vue’) } ,
        { path :  ‘/about/:id’ , name : ’about’ , component: () => import(‘/../views/about.vue’) } 
    ]
  • 在需要跳转的home组件中使用 router-link 标签
    <router-link :to=”{ name : ’about’ , params : { id : 1} }”>跳转</router-link>
  • 在跳转到的about组件中拿到传过来的值
    this.$route.params.id

小结:params传参类似post,路由配置可以为 path : '/about/ : id’或  path : '/about : id’。

注意:如果不配置path的路由地址 :id ,那么第一次发起请求时可以拿到传过来的值,但是刷新之后id会消失;配置了path后刷新页面id会保留。

1.2 query传参

  • 首先定义好路由
    const routes = [
        { path :  ‘/home’ , component : () => import(‘/../views/home.vue’) } ,
        { path :  ‘/about’ , name : ’about’ , component: () => import(‘/../views/about.vue’) } 
    ]
  • 在需要跳转的home组件中使用 router-link 标签
    <router-link :to=”{ name : ’about’ , query: { id : 1} }”>跳转</router-link>
  • 在跳转到的about组件中拿到传过来的值
    this.$route.query.id

小结:query传参类似于get,在url末尾会显示传过来的参数,路由地址可不配置。

注意:如果是html取参,用$route.query.id;如果是script取参,用this.$route.query.id。

总结:如果使用params传参,要在path中配置好路由地址,不然页面刷新后传过来的参数会丢失;如果使用query传参,则无需再path中配置路由地址,页面跳转后刷新也不会丢失参数。

 

 

2. 方式二:使用button按钮和点击时间@click

2.1 params 传参

  • 首先定义好路由
    const routes = [
        { path :  ‘/home’ , component : () => import(‘/../views/home.vue’) } ,
        { path :  ‘/about/:id’ , name : ’about’ , component: () => import(‘/../views/about.vue’) } 
    ]
  • 在需要跳转的home组件中添加一个button按钮,并增加点击事件

    <button @click=”change”>跳转</button>
  • 在change方法中使用this.$router.push进行页面跳转

    change(){
        this.$router.push({
            name : “about” , 
            params : {id : 1}
        })
    }        
  • 在about组件中拿到传过来的值

    this.$route.params.id 

小结:和使用router-link标签类似,使用params就类似于post方法,需要配置好路由地址:id,才不会在刷新页面后丢失数据。

2.2 query传参

 

  • 首先定义好路由
    const routes = [
        { path :  ‘/home’ , component : () => import(‘/../views/home.vue’) } ,
        { path :  ‘/about’ , name : ’about’ , component: () => import(‘/../views/about.vue’) } 
    ]
  • 在需要跳转的home组件中添加一个button按钮,并增加点击事件

    <button @click=”change”>跳转</button>
  • 在change方法中使用this.$router.push进行页面跳转

    change(){
        this.$router.push({
            name : “about” , 
            query: {id : 1}
        })
    }

    或者:

    change(){
        this.$router.push({
            path: “/about” , 
            query: {id : 1}
        })
    }
  • 在about组件中拿到传过来的值

    this.$route.query.id

小结:和使用router-link标签类似,使用query就类似于get方法,不需要配置好路由地址:id,刷新页面后数据也不会丢失。

 

总结:如果使用params传参,要在path中配置好路由地址,不然页面刷新后传过来的参数会丢失;如果使用query传参,则无需再path中配置路由地址,页面跳转后刷新也不会丢失参数。

标签:传参,about,VUE,query,跳转,path,id,路由
From: https://www.cnblogs.com/hellocampo/p/17464445.html

相关文章

  • vue和vuex的版本搭配
    重要是事情说三遍,vue2使用vuex3!vue3使用vuex4.!否则会出现this.$store为undefined错误!vue2使用vuex3!vue3使用vuex4.!否则会出现this.$store为undefined错误!vue2使用vuex3!vue3使用vuex4.!否则会出现this.$store为undefined错误!......
  • Vue 配置项props 使用方法
     props templatescript1 script2 ......
  • Vue 执行流程
    1.main.js项目入口文件2.App.vue创建路由,设置App的样式,由router-link链接到响应的路由地址不同版本的vue区别3.router>index.js注册APP下的二级路由到不同视图4.public>index.htmlpublic下的页面配置,public的路由是5.自定义配置文件不能更改的文件:......
  • vue封装组件并发布到Npm
    前言vue封装组件是一个很常规的操作。一个封装好的组件可以在项目的任意地方使用,甚至我们可以直接从npm仓库下载别人封装好的组件使用,入element-ui这一类的组件库。1、环境准备因为我们此次封装的是Vue组件,所以我们直接在Vue脚手架项目里面进行封装即可。(1)、初始化项目vuec......
  • vue 预览word文档、图片、pdf文件等
    <el-buttonsize="mini"type="text"icon="el-icon-edit"@click="handlePreviewFile(obj)">预览</el-button><el-dialogtitle="预览":visible.sync="......
  • vue3实现自定义指令
    创建一个empty.jsimport{nextTick}from'vue';constemptyImgUrl=newURL('@/assets/images/empty-icon.jpeg',import.meta.url).href;//在vue3中不支持require引入静态图片,这是一种引入方式另外一种是直接importconstempty={install(app,options){app......
  • Vue中ref和$refs的介绍及使用
    在JavaScript中需要通过document.querySelector("#demo")来获取dom节点,然后再获取这个节点的值。在Vue中,我们不用获取dom节点,元素绑定ref之后,直接通过this.$refs即可调用,这样可以减少获取dom节点的消耗。ref介绍: ref被用来给元素或子组件注册引用信息。引用信息将会注册在父......
  • provide / inject替代 Vuex
    provide/inject可以解决上述弊端A.vue–>B.vue,用法://A.vueexportdefault{provide:{name:'Aresn'}}//B.vueexportdefault{inject:['name'],mounted(){console.log(this.name);//Aresn}}provide/inject替代VuexVuex做状态管理,它是一个专为......
  • spring cloud gateway网关(一)之网关路由
    1、gateway相关介绍在微服务架构中,系统往往由多个微服务组成,而这些服务可能部署在不同机房、不同地区、不同域名下。这种情况下,客户端(例如浏览器、手机、软件工具等)想要直接请求这些服务,就需要知道它们具体的地址信息,例如IP地址、端口号等。这种客户端直接请求服务的方式存在很......
  • vue之vue-cli创建项目、vue项目目录结构、vue项目编写规范、 es6导入导出语法
    目录一、vue-cli创建项目1.1、背景知识单页面应用:spa单文件组件(一个组件一个文件)一个组件中有的东西使用vue-cli创建vue项目,才能使用单文件组件vue-cli脚手架,1.2使用vue-cli创建vue项目1.3vue-cli创建项目vue-cli命令行创建项目使用vue-cli-ui创建运行vue项目方式一:命令行中......