vue中页面间跳转传值的两种方式(query,params)

LinMeng 等级 712 0 0

两者都可以传递参数,区别是什么?

query 传参配置的是path,而params传参配置的是name,在params中配置path无效 query在路由配置不需要设置参数,而params必须设置 query传递的参数会显示在地址栏中 params传参刷新会无效,但是query会保存传递过来的值,刷新不变 ;

    this.$router.push({
      path: '/home',
      query: {
        site: [],
        bu: []
      }
    })
params:
  this.$router.push({
    name: 'Home',  // 路由的名称
    params: {
      site: [],
      bu: []
    }
  })
params:/router1/:id ,/router1/123,/router1/789 ,这里的id叫做params
query:/router1?id=123 ,/router1?id=456 ,这里的id叫做query。

路由的配置

  {
  path: '/home',
  name: Home,
  component: Home
  }
  params:
  {
  path: '/home/:site/:bu',
  name: Home,
  component: Home
  }

如果路由上面不写参数,也是可以传过去的,但不会在url上面显示出你的参数,并且当你跳到别的页面或者刷新页面的时候参数会丢失,那依赖这个参数的http请求或者其他操作就会失败 在接收跳转的页面获取路由参数:

let self = this
self.getParams()
},
watch () {
'$route': 'getParams'
},
methods: {
  getParams () {
  let site = this.$route.query.site
  let bu = this.$route.query.bu
  // 如果是params 传参,那就是this.$route.params.site
  上面就可以获取到传递的参数了
 }

注意:获取路由上面的参数,用的是$route,后面没有r;

  1. params是路由的一部分,必须要有。query是拼接在url后面的参数,没有也没关系。
  2. params一旦设置在路由,params就是路由的一部分,如果这个路由有params传参,但是在跳转的时候没有传这个参数,会导致跳转失败或者页面会没有内容。
  3. params、query不设置也可以传参,但是params不设置的时候,刷新页面或者返回参数会丢失,query并不会出现这种情况,这一点的在上面说过.

    最后总结:

    路由传递参数和传统传递参数是一样的,命名路由类似表单提交而查询就是url传递:
  4. 命名路由搭配params,刷新页面参数会丢失
  5. 查询参数搭配query,刷新页面数据不会丢失
  6. 接收参数使用this.$router后面就是搭配路由的名称就能获取到参数的值
收藏
评论区

相关推荐

vue中页面间跳转传值的两种方式(query,params)
两者都可以传递参数,区别是什么? query 传参配置的是path,而params传参配置的是name,在params中配置path无效 query在路由配置不需要设置参数,而params必须设置 query传递的参数会显示在地址栏中 params传参刷新会无效,但是query会保存传递过来的值,刷新不变 ; query: this.$route
Vue 组件通信方式及其应用场景总结
前言 相信实际项目中用过vue的同学,一定对vue中父子组件之间的通信并不陌生,vue中采用良好的数据通讯方式,避免组件通信带来的困扰。今天笔者和大家一起分享vue父子组件之间的通信方式,优缺点,及其实际工作中的应用场景 首先我们带着这些问题去思考 1 vue中到底有多少种父子组件通信方式? 2 vue中那种父子组件最佳通信方式是什么? 3
了解Vuex状态管理模式
1 Vuex是什么呢?它是Vue的状态管理模式,在使用vue的时候,需要在vue中各个组件之间传递值是很痛苦的,在vue中我们可以使用vuex来保存我们需要管理的状态值,值一旦被改变,所有引用该值的地方就会自动更新。是不是很方便,很好用呢? vuex是专门为vue.js设计的状态管理模式,集中式存储和管理应用程序中所有组件的状态,vuex也集成了vue的
2021前端技术面试必备Vue:(二)组件篇
上一章已经更新了Vue基础,那么本章将更新Vue中最重要的概念组件,会介绍到组件的使用,组件传值,插槽的使用,插槽的分类。 当第一章基础掌握差不多了,然后再学习了组件的开发,那么你就可以开发简单的Vue项目,路由文章还没有更新,学习完Router后,就可以开发实战项目了。<section id"nice" datatool"mdnice编
vue最新面试题
最近在面试,总结几个重点的面试题:一、vue父子组件之间的传值:简单来说,子组件通过props方法接受父组件传来的值,子组件通过$emit方法来向父组件发送数据。(具体案例可以看我之前写的博客)。二、vue生命周期函数:beforeCreatecreatedbeforeMountmountedbeforeUpdateupdatedbeforeDestr
vue项目无配置文件解决方案
问题在开发vue项目时,需要重新设置项目的启动端口,发现项目目录中并没有相关的配置文件【config目录】vue脚手架版本【通过vue version查询】:@vue/cli 4.5.13解决方案在vue项目根目录下创建vue.config.js配置文件vue.config.jsmodule.exports devServer: d
02、Vue.js
1、插值 ====     在Vue.js指令学习之前,先简单学习一下Vue插值     语法:_**{{ }}**_,将vue 实例中的数据 写入到页面对应的位置。下面代码中hello、msg、num等均是在vue的data中定义的变量。 1.1 文本插值 -------- <div>{{hello}}<div> 1.2 HTML 标签插
Vite使Vue CLI过时了吗?
![](https://oscimg.oschina.net/oscnet/b9aed6aa-9d14-4fd3-82b8-e1724221ee71.jpg) **文末福利资源更新** Vue生态系统中有一个名为Vite的新构建工具,它的开发服务器比Vue CLI快10-100倍。 这是否意味着Vue CLI已经过时了?在本文中,我将比较这两种构
10分钟阅读一篇关于Vue
![file](https://oscimg.oschina.net/oscnet/up-4f8ccb1755bb73c4ffe6a7ba91253ddc.jpg "file") Vue-cli Vue脚手架的基本用法,vue脚手架用于快速生成vue项目基础架构: 地址: https://cli.vuejs.org/zh/ 使用方式,安装3.x版本
SpringBoot+Vue实现文件上传+预览
从松哥的微信公众号上面看到了[SpringBoot+Vue实现文件上传+预览](https://www.oschina.net/action/GoToLink?url=https%3A%2F%2Fmp.weixin.qq.com%2Fs%2FKi6sJbAS-24OPn9YcnrZhQ)的视频教程,如下图所示: ![SpringBoot+Vue实现文件上
SpringBoot+Vue实现文件上传+预览
从松哥的微信公众号上面看到了[SpringBoot+Vue实现文件上传+预览](https://www.oschina.net/action/GoToLink?url=https%3A%2F%2Fmp.weixin.qq.com%2Fs%2FKi6sJbAS-24OPn9YcnrZhQ)的视频教程,如下图所示: ![SpringBoot+Vue实现文件上
VUE AntDesign DatePicker设置默认显示当前日期
1:main.js中引入依赖 import Vue from "vue"; import { DatePicker } from 'ant-design-vue'; import 'ant-design-vue/dist/antd.css'; #设置中文 import moment from 'm
Vue CLI 3搭建vue+vuex 最全分析
一、介绍 ==== Vue CLI 是一个基于 Vue.js 进行快速开发的完整系统。有三个组件: **CLI**:`@vue/cli` 全局安装的 npm 包,提供了终端里的vue命令(如:vue create 、vue serve 、vue ui 等命令) **CLI 服务**:`@vue/cli-service`是一个开发环境依赖。构建于 [we
Vue CLI 2.x搭建vue,目录最全分析
一、vue-cli介绍 =========== vue-cli是一个用于快速搭建vue项目的 脚手架。 二、vue-cli安装、更新 ============== 安装过nodeJs 、cnpm 后,全局安装vue-cli(以后其他项目可直接使用): cnpm install -g vue-cli 更新: cnpm update
vue 中的input输入框type=number时一个缺陷
本来是在vue里发现获取不到 input\[ type="number"\]的值,就是输入两个小数点的数值,比如1.1.1,以为是vue的错误,然而不是,vue只做了数字处理 不明白为什么获取不到值还让输入两个小数点呢,这就尴尬了。 //vue里对输入的值做的处理function toNumber (val) { var n = pa