vue-router中的query和params

744 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第1天,点击查看活动详情 >>

vue-router中的query和params都是跳转url时传递的参数。query相当于get请求的传递参数,parmas相当于resful中的参数(后台的参数);query可以通过name和path传递,params只能通过name传递

router和route

  • router是vue-router的一个只写的路由操作对象,想要跳转路由需要用router.push方法。通过Vue.use(VueRouter)和VueRouter构造函数得到一个router的实例对象,这个对象中是一个全局的对象,他包含了所有的路由包含了许多关键的对象和属性

  • route是一个只读的路由信息对象,是当前router的跳转对象。每一个路由都会有一个route对象,是一个局部的对象,可以获取对应的name、path、params、query......

query和params

//通过$router传参,$route.query.id接收参数
this.$router.push({
  path:'/xxx',
  query: {
    id:'123',
    name:'query'
  }
})
  • params(需要定义path和name)
//通过$router传参,$route.params.id接收参数
this.$router.push({
  name:'xxx',  //params传参只能用name
  params: {
    id:'456',
    name:'params'
  }
})

// router/index.js
......
{
  path:'/xxx/:id/:name'
  ......
}
......
  • 区别
    • query传参可以用name和path两种;params只能用name,如果在params中用path接收页面的参数会是undefined;且path的值只能是'/xxx',name的值只能是'xxx'
    • query的参数用?拼接在url后面;params的参数属于路由的一部分
    • query相当于get请求,页面跳转的时候参数在url当中显示,再刷新页面或跳转到其他页面的时候参数不会丢失;params相当于post请求,页面跳转的时候参数不会在url中显示,再刷新页面或跳转到其他页面的时候参数会丢失