Skip to content

Vue嵌套路由和query参数

1. 多级(嵌套)路由

1.1 配置路由规则,使用children配置项

js
routes:[
  {
    path: '/about'
    component: About
  },
  {
    path: '/home',
    component: Home,
    children:[ //通过children设置子级路由
      {
        path: 'news'  // 此处一定不要写:/news
        component: News
      },
      {
        path: 'message' // 此处一定不要写:/message
        component: Message
      }
    ]
  }
]

1.2 跳转(要写完整路径)

vue
<router-link to="/home/news">News</router-link>

2. query参数

路由可以携带参数

  • 第一种方式,在url上面拼接
  • 第二种方式:<router-link>中的to属性传入对象
js
<template>
  <div>
    <ul>
      <li v-for="message in messageList" :key="message.id">
<!-- 跳转路由携带query参数,to的字符串写法       -->
        <router-link :to="`/home/message/detail?id=${message.id}&content=${message.content}`">{{message.content}}</router-link> | 
<!-- 跳转路由携带query参数,to的对象写法       -->
        <router-link :to="{
          path:'/home/message/detail',
          query: {id: message.id, content: message.content}
        }">{{message.content}}</router-link>
      </li>
    </ul>
    <hr/>
    <router-view></router-view>
  </div>
</template>

<script>
export default {
  name: "Message",
  data(){
    return {
      messageList:[
        {id:"001", content: "消息1"},
        {id:"002", content: "消息2"},
        {id:"003", content: "消息3"},
      ]
    }
  }
}
</script>

接收参数:

vue
<template>
  <div>
    消息id:{{$route.query.id}}, 消息内容: {{$route.query.content}}
  </div>
</template>

<script>
export default {
  name: "Detail"
}
</script>