0
点赞
收藏
分享

微信扫一扫

路由元信息,路由传参以及跳转

香小蕉 2022-02-14 阅读 66

路由元信息:

有时,你可能希望将任意信息附加到路由上,如过渡名称、谁可以访问路由等。这些事情可以通过接收属性对象的meta属性来实现,并且它可以在路由地址和导航守卫上都被访问到。定义路由的时候你可以这样配置 meta 字段:

官网:

const routes = [
  {
    path: '/posts',
    component: PostsLayout,
    children: [
      {
        path: 'new',
        component: PostsNew,
        // 只有经过身份验证的用户才能创建帖子
        meta: { requiresAuth: true }
      },
      {
        path: ':id',
        component: PostsDetail
        // 任何人都可以阅读文章
        meta: { requiresAuth: false }
      }
    ]
  }
]

这样我们访问某一个路由时,就可以通过meta去访问它的路由信息请添加图片描述由此可见,我们加上这个属性后,$route就有了meta这个属性,在很多时候,各个页面呈现的组件不一样,所以我们需要控制路由的显示与隐藏,这个时候我们可以在路由元信息写入控制显示与隐藏的show(因为vue是0dom操作,所以不太喜欢用v-if,v-if会对dom树进行操作,会更多的消耗资源)请添加图片描述
一般来说,
$router是在编程式导航会用到,比如上次说到的路由跳转(push或者replace)
$route是包含这个路由的所有信息,比如刚刚添加的meta属性,还有params参数以及query参数,所以可以通过图上这种方法去控制组件的显示与隐藏

路由传参:

我们这里重点介绍使用对象传参这种方式,因为它在开发过程中更为常用
使用步骤:
请添加图片描述
首先在目标组件中写入name属性,这种方式我试了一下不用占位,还挺方便的
请添加图片描述
这样这个路由组件就有了name这个属性,下一步就可以进行传参了

  this.$router.push({name:"search",params:{keyword:this.keyword},query:{k:this.keyword}})

哇,这个也太方便了,根本不用考虑连接参数等问题,一步到位
可能会有人问:这个name能不能换成path,这个也是很多公司面试会问到的问题,答案是不可以,换成path会报错

<template>
    <div>我是脚部
        <input type="text" v-model="keyword">
        <button @click="goSearch">跳转到搜索页面</button>
        <h1>{{this.keyword}}</h1>
    </div>
   </template>
<script>
export default{
  name:"",
  data(){
      return{
          keyword:''
      }
  },
  methods:{
     goSearch(){
    this.$router.push({name:"search",params:{keyword:this.keyword},query:{k:this.keyword}})
     }
  }
}
</script>

结果
请添加图片描述

举报

相关推荐

0 条评论