vue 动态路由基本使用

动态路由匹配(官方解释)

我们经常需要把某种模式匹配到的所有路由,全都映射到同个组件。例如,我们有一个 User 组件,对于所有 ID 各不相同的用户,都要使用这个组件来渲染。那么,我们可以在 vue-router 的路由路径中使用“动态路径参数”(dynamic segment) 来达到这个效果:

const User = { 
    template: '<div>User</div>'
}
const router = new VueRouter({
  routes: [
    // 动态路径参数 以冒号开头
    { path: '/user/:id', component: User }
  ]
})

现在呢,像 /user/foo 和 /user/bar 都将映射到相同的路由。

一个“路径参数”使用冒号 : 标记。当匹配到一个路由时,参数值会被设置到 this.$route.params,可以在每个组件内使用。于是,我们可以更新 User 的模板,输出当前用户的 ID:
···
const User = {
template: ‘

User {{ $route.params.id }}

}
···

你可以在一个路由中设置多段“路径参数”,对应的值都会设置到 $route.params 中。例如:

模式匹配路径$route.params
/user/:username/user/evan{ username: ‘evan’ }
/user/:username/post/:post_id/user/evan/post/123{ username: ‘evan’, post_id: ‘123’ }

除了 r o u t e . p a r a m s 外 , route.params 外, route.paramsroute 对象还提供了其它有用的信息,例如, r o u t e . q u e r y ( 如 果 U R L 中 有 查 询 参 数 ) 、 route.query (如果 URL 中有查询参数)、 route.query(URL)route.hash 等等。你可以查看 API 文档 的详细说明。

举个栗子

模拟个场景:现在组件中写一个列表,假装他是个新闻列表,点击任意一条后,详情页面接收到我点击的是哪条,并且把我点击的那条详细信息给展示出来。
分析:那么我点击的时候需要知道点击的那条,接受的时候接收的那条,所以就需要再点击的时候传递对应点击的id 给详情页。

上代码:

模拟个列表,假如点击事件,在点击事件中传递对应的(id),模拟数据不规范,传个data,假装它是id.

在这里插入图片描述

<template>
    <div>
       nowplaying
       <ul>
           <li v-for="data in datalist" :key="data" @click="handleChnagePage(data)">{{data}}</li>
       </ul>
    </div>
</template>
<script>
export default {
  data () {
    return {
      datalist: ['111111', '222222', '333333']
    }
  },
  methods: {
    handleChnagePage (id) {
      console.log(id)
      //   1.编程式导航
      this.$router.push({
        path: `/detail/${id}`
      })
    }
  }
}
</script>

此刻点着啥反应都没,一点都不好使,啊,原来是路由中没配置动态路由,那我们现在匹配一下吧~

在这里插入图片描述

{
    path: '/detail/:myid', // detail/aa 动态路由
    component: Detail
  },

在路径上添加 /:xx
以此例子为例:路径匹配的时候就自动识别为 /detail/1,那么就完美的传过去了
我例子中写的是myid 这个是可以随便起的,只要你自己知道叫啥就行

传过去以后可以接收了吧,官方也说啦,用 $route.params接收。

在这里插入图片描述

接收

在Detail.vue,其中内容为:

<template>
    <div >
        传递来的数据是: {{ $route.params.myid }}
    </div>
</template>

如果你想在脚本(script标签)中使用这个id值,可以这么写:

this.$route.params.myid

当然也有其他的api ,可以打印this.$route看看
那么基本使用就是这样啦~

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值