vue router使用query和params傳參的使用和區(qū)別

一、params、query是什么?

  • params:/router1/:id ,/router1/123,/router1/789 ,這里的id叫做params
  • query:/router1?id=123 ,/router1?id=456 ,這里的id叫做query。

1、用法上的
query要用path來引入,params要用name來引入,接收參數(shù)都是類似的,分別是this.$route.query.namethis.$route.params.name。

注意接收參數(shù)的時候,已經(jīng)是 $route 而不是$router了哦??!

2、展示上的
區(qū)別:

  • query更加類似于我們ajax中g(shù)et傳參,params則類似于post

二、寫法如下

//params方式
methods:{
      clickme:function(){
        this.$router.push({this.$router.push({ name: 'user', params: { id: 'user', name: 'user', age: 'John' }
,query: { id: 's', name: 'ss', age: 'John' }})
      }
    }

注意:路由設(shè)置這里,當(dāng)你使用params方法傳參的時候,要在路由后面加參數(shù)名,并且傳參的時候,參數(shù)名要跟路由后面設(shè)置的參數(shù)名對應(yīng)。使用query方法,就沒有這種限制,直接在跳轉(zhuǎn)里面用就可以。(例如:params的name與id必須與路由匹配,否則無效果)。并且當(dāng)你跳到別的頁面后刷新頁面的時候params參數(shù)會丟失,那依賴這個參數(shù)的http請求或者其他操作就會失敗。

//query方式
methods:{
      clickme:function(){
        this.$router.push({ path: '/user/1', query: { id: 'user', name: 'John', age: 'John' }})
      }
    }

三、實例如下

//home.vue
<template>
   <div>
       <h3>{{home}}</h3>
       <span @click="clickme">user頁面</span>
       <router-view/>
   </div>
</template>
<script>
export default{
   data(){
       return{
           home:'Home頁面'
       }
   },
   methods:{
     clickme:function(){
       this.$router.push({ path: '/user/1', query: { id: 'user', name: 'John', age: 'John' }})
     }
   }
}
</script>
//router/index.js
const routers= new Router({
  mode: 'history',
  routes: [
    {
      path: '/',
      component: Home,
      children: [
        { path: 'index', name:'index', component: Index },
      ]
    },
    {
      path: '/about',
      component: About
    },{
      name:'user',
      path: '/user/:id',
      component: User
    }
  ]
});
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容