Vue Router路由中 的$route.params和$ro

2021-01-06  本文已影响0人  兰觅

一.简述

在实现页面跳转时,需要携带参数。在这里使用的是vue 中的路由Vue Router,使用前先安装依赖配置项目环境,具体操作参考windos环境安装Vue及配置环境

二. $router$route的区别

$router : 是路由操作对象,只写对象
$route : 路由信息对象,只读对象

//操作 路由跳转
this.$router.push({
      name:'hello',
      params:{
          name:'word',
          age:'11'
     }
})

//读取 路由参数接收
this.name = this.$route.params.name;
this.age = this.$route.params.age;

三.route.params和$route.query的区别

类型: Object
一个 key/value 对象,包含了动态片段和全匹配片段,
如果没有路由参数,就是一个空对象。

类型: Object
一个 key/value 对象,表示 URL 查询参数。
例如,对于路径 /foo?user=1,则有 $route.query.user == 1,如果没有查询参数,则是个空对象。

四.params和query的使用

1.$route.params的使用

使用params传参只能使用name进行引入

router/index.js路由的配置文件中需要写name,否则获取不到信息会提示undefined

{
path: '/second/:id/:name',
name: 'second',
component: () => import('@/view/second')
}

传参组件:test1.vue

<template>
<el-button @click="lookRourt">查看测试</el-button>
</template>

<script>
 export default {
 data() {
      return {   }
    },
    methods: {
      lookRourt() {
    //params传参 使用name
    this.$router.push({
        name:'second',
        params: {
    id:'456578',
     name: 'qwerty'
  }
})
      }
    }
}
</script>

接收参数组件:second.vue

<script>
  export default {
    data() {
      return {
       queryName :'',
        queryId :''
      }
    },
    mounted: function() {
 //params接收参数
this.id = this.$route.params.id ;
this.name = this.$route.params.name ;

    },
    methods: {

    },

  }
</script>
2.$route.query的使用

传参组件:test2.vue

<template>
<el-button @click="lookRourt">查看测试</el-button>
</template>

<script>
 export default {
 data() {
      return {   }
    },
    methods: {
      lookRourt() {
     //query传参,使用name跳转
      this.$router.push({
          name:'second',
         query: {
        queryId:'2121656',
        queryName: 'wewew'
    }
})

    //query传参,使用path跳转
    this.$router.push({
        path:'second',
        query: {
        queryId:'454645',
        queryName: 'qqweqwery'
    }
})
      }
    }
}
</script>

接收参数组件:second.vue

<script>
  export default {
    data() {
      return {
       queryName :'',
        queryId :''
      }
    },
    mounted: function() {
  //query传参接收
  this.queryName = this.$route.query.queryName;
  this.queryId = this.$route.query.queryId;

    },
    methods: {

    },

  }
</script>

不管是path引入还是name引入效果都一样

1.params是路由的一部分,必须要在路由后面添加参数名query是拼接在url后面的参数,没有也没关系
2.params一旦设置在路由,params就是路由的一部分,
如果这个路由有params传参,但是在跳转的时候没有传这个参数,会导致跳转失败或者页面会没有内容
3.路由后面没有/:id/:name,地址栏没有参数
4.query相当于get请求,页面跳转的时候,可以在地址栏看到请求参数
params相当于post请求,参数不会再地址栏中显示

上一篇下一篇

猜你喜欢

热点阅读