Vue 路由组件参数设置与获取 query参数与params参数

 

Vue 路由参数的设置与获取

一、query参数

设置routes

import VueRouter from 'vue-router'
import Polaris from '../pages/Polaris'
import PolarisMessage from '../pages/PolarisMessage'
import PolarisPhone from '../pages/PolarisPhone'
import Detail from '../pages/Detail'

export default new VueRouter({
    routes: [
        {
            component: Polaris,
            path: "/Polaris",
            children: [
                {
                    path: 'PolarisMessage',
                    component: PolarisMessage
                },
                {
                    path: 'PolarisPhone',
                    component: PolarisPhone,
                    children: [
                        {
                            path: 'detail',
                            component: Detail
                        }
                    ]
                }
            ]
        },
    ]
})

传参

PolarisPhone.vue

<template>
  <div>
    <h1>phone by Polaris</h1>
    <!-- 1 query参数  字符串写法 -->
    <!-- <router-link v-for="item in detailList" :to="`/Polaris/PolarisPhone/Detail?msg=${item.msg}`" :key="item.id">{{item.title}}</router-link> 
    -->

    <!-- 1 query参数  对象写法 -->
    <router-link
      v-for="item in detailList"
      :to="{
        path: '/Polaris/PolarisPhone/detail',
        query: {
          msg: item.msg,
        },
      }"
      :key="item.id"
      >{{ item.title }}</router-link
    >
    <div>
      <router-view />
    </div>
  </div>
</template>

<script>
export default {
  data: () => ({
    detailList: [
      { id: 1, title: "查看详情1", msg: "我是详情1" },
      { id: 2, title: "查看详情2", msg: "我是详情2" },
      { id: 3, title: "查看详情3", msg: "我是详情3" },
    ],
  }),
};
</script>

获取参数
Detail.vue

<template>
  <li >
      <span>{{$route.query.msg}}</span>
  </li>
</template>

<script>
export default {};
</script>

二、params参数

  • props为对象
  • props为布尔值
  • props为函数

props为对象

routes中写死数据,路由组件中声明props接收

router/index.js

import VueRouter from 'vue-router'
import Island from '../pages/Island'


export default new VueRouter({
    routes: [
        {
            component: Island,
            path: "/Island",
            props:{id:666}
        }
    ]
})

Island.vue
声明props接收

<template>
  <div>
    <h1>{{id}}</h1>
  </div>
</template>

<script>
export default {
  props:['id']
};
</script>

props为布尔值

routes中声明props为true已经path占位符,路由中间中声明props接收

router/index.js

import VueRouter from 'vue-router'
import Island from '../pages/Island'


export default new VueRouter({
    routes: [
        {
            component: Island,
            path: "/Island/:id",
            props:true
        }
    ]
})

App.vue

<template>
  <div id="app">
    <div class="nav">
      <router-link class="nav" :to="`/Island/${id}`" active-class="active-nav">
        Island
      </router-link>
    </div>
    <div class="con">
      <router-view />
    </div>
  </div>
</template>

<script>
export default {
  name: "App",
  data:()=>({id:123})
};
</script>


Island.vue
声明props接收

<template>
  <div>
    <h1>{{id}}</h1>
  </div>
</template>

<script>
export default {
  props:['id']
};
</script>

props为函数

routes中声明props为一个函数,Vue给这个函数注入$routes形参,从而得到路由参数
可以拿到params和query参数


router/index.js

import VueRouter from 'vue-router'
import Island from '../pages/Island'

export default new VueRouter({
    routes: [
        {
            component: Island,
            path: "/Island",
            props: ($routes) => ({
                id: $routes.query.id,
                title: $routes.query.title
            })
        }
    ]
})

App.vue

<template>
  <div id="app">
    <div class="nav">
      <router-link class="nav" :to="`/Island?id=${id}&title=${title}`" active-class="active-nav">
        Island
      </router-link>
    </div>
    <div class="con">
      <router-view />
    </div>
  </div>
</template>

<script>
export default {
  name: "App",
  data:()=>({id:123,title:'my title'})
};
</script>

Island.vue
声明props并接收参数

<template>
  <h1>
      {{id}} 
      -
      {{title}}
    </h1>
</template>

<script>
export default {
  props:['id','title']
};
</script>
posted @   IslandZzzz  阅读(4396)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端
点击右上角即可分享
微信分享提示