Vue-cli-3.路由传参

params 参数

{

         path:'/index', 

 // 重定向到指定的路由 

         redirect:'/'

 }, 

 // 注意:这里的路由需要传一个参数,路由可以传多个参数 

        path:'/city/:id', 

 // 设置该选项为true,组件可以通过props选项接收路由参数 

        props:true, 

        component:City }, 

// *号,表示匹配不上的所有路由

 { 

         path:' * '

         component:Error404 

}




1.props传参

我们可以单独在components文件夹中创建一个路由组件,如下图,并将css样式及文本内容移至该组件文件中,在App.vue中导入并注册,然后在template中引入组件,如下图所示。

这样App.vue中就会比较干净。

------------------------------------------------------------------------------------------------------------------------

如果我们想打开页面显示首页就需要引入重定向,在routes中单独配置一个新的对象,path路径为空,redirect为/home

如果输入的网页路径为未配置的路径,此时我们想要显示404页面,则在routes中配置一个新的对象Error404.vue,如下图 ,此处的  * 为未配置的所有路由地址,并将其注册,引入。

如果在显示404页面后,我们想要点击图片返回首页,则给图片写一个click函数,如下图

如果多个router-link都是跳转到同一个页面,但是每个router-link所在的页面的数据不相同,此时就需要给路由传参,如下图

然后在跳转的路由页面中的created生命周期函数中使用params参数来接收传的参数。

但是该方法存在一个问题,如上图所示,如果在南京,镇江,无锡,苏州之间切换,页面不会跳转,因为这四个router-link都指向type路由页,因此需要给创建type路由页面时的信息里添加一个属性 props

其次在type路由页面中添加props用于接受传的参数。

并在type路由页面中开启监听,监听id的变化。

created(){

// $route返回的是当前路由信息,它身上有一个params属性,该属性里面保存的是当前路由信息的参数。

        // console.log(this.$route);

        // console.log(this.$route.params.id);

        // 从路由参数中获取城市编号

        // let cityId = this.$route.params.id

        // 再根据城市编号,获取对应的城市信息

        // this.city = this.citys.find(c=>c.id==cityId)this.city=this.citys.find(c=>c.id==this.id)

},

2.query传参

// 使用props选项接收路由参数props:["id"],

<!-- 路由地址,采用query传参方式:?参数1=XXX&参数2=XXX... -->

<li @click="$router.push(`/type?id=${item.id}`)"    v-for="(item,index) in types" :key="index">{{item.name}}</li>

3.router 和router和route

// $router返回的是当前项目中的路由器对象 

 // $route返回的是当前路由信息

// 判断当前路由信息,不是/news,添加到/news

if(this.$route.path!='/news'){

                    this.$router.push('/news')

 }

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容