首页 经验

vue params和query的区别(怎么定义 vue-router 的动态路由? 怎么获取传过来的值?)

时间: 2024-10-21 10:56:34

(部分内容来自网络,其真实性存疑,为了避免对您造成误导,请谨慎甄别。)

在 Vue Router 中,paramsquery 是两种常用的路由传参方式,它们有不同的使用场景和特点。


params vs query


1. params

   - 定义params 是通过路由路径定义的参数。定义时在路由的 path 中使用冒号 : 进行标记。

   - 特点

     - 用于动态路由,可以直接在 URL 中嵌入。

     - 适用于需要描述资源的场景,如 /user/:id

     - 传递的参数必须是字符串类型。

   - 获取:在组件中通过 this.$route.params 获取。


2. query

   - 定义query 是通过 URL 字符串传递的参数,通常以 ? 开头,后面跟着 key=value 的形式,可以有多个参数,通过 & 分隔。

   - 特点

     - 多用于描述页面的状态或过滤条件,如 /search?keyword=vue&page=1

     - 参数可以是字符串、数字等,可以包含多个键值对。

   - 获取:在组件中通过 this.$route.query 获取。


示例


1. 定义动态路由


以下是定义动态路由的示例:


javascript

import Vue from 'vue';

import Router from 'vue-router';

import User from '../components/User.vue';


Vue.use(Router);


const routes = [

  {

    path: '/user/:id',  // 动态路由使用 params

    component: User,

  },

];


const router = new Router({

  routes,

});


export default router;


2. 获取传过来的值


在目标组件 User.vue 中,你可以通过 this.$route.paramsthis.$route.query 来获取这些传递的值。


<template>

  <div>

    <h1>User ID: {{ userId }}</h1>

    <h2>Query Parameter: {{ keyword }}</h2>

  </div>

</template>


<script>

export default {

  computed: {

    userId() {

      // 通过 params 获取动态路由参数

      return this.$route.params.id;

    },

    keyword() {

      // 通过 query 获取查询参数

      return this.$route.query.keyword;

    },

  },

};

</script>


总结


- 使用 params 适合定义与资源相关的动态路由,可通过路径直接进行匹配。

- 使用 query 适合传递较多的附加信息,不影响路由的匹配。


这两种方式可根据具体需求选择使用,灵活组合使用可以帮助构建更复杂的 Vue 应用。


上一个 前端面试vue题目 文章列表 下一个 vue $route 和 $router 的区别

最新

工具

© 2019-至今 适观科技

沪ICP备17002269号