Vue路由传参props解耦的三种方式小结

题目涉及到Vue路由传参props解耦的三种方式,以下是本文的攻略和示例:

攻略

1. 在路由定义时使用props

在定义路由时,通过将props设置为true,可以将路由参数作为组件属性传递。

// 路由定义
const router = new VueRouter({
  routes: [
    {
      path: '/user/:id',
      component: User,
      props: true
    }
  ]
})

在上述路由定义中,我们定义了一个/user/:id的路由,当匹配该路由时,Vue会自动将该路由的参数作为组件的props传递。

在组件中,我们只需要定义props接收路由参数,并直接使用即可。

// 组件定义
export default {
  props: ['id'],
  // ...
}

2. 在路由定义时使用函数

除了直接将props设置为true,还可以使用函数来进行更加灵活的传递。

const router = new VueRouter({
  routes: [
    {
      path: '/user/:id',
      component: User,
      props: (route) => ({ id: route.params.id, name: route.query.name })
    }
  ]
})

在上述路由定义中,我们使用了一个匿名函数来返回props。该函数接收一个route参数,我们可以根据该参数获取路由参数并返回带有用户信息的props对象。

// 组件定义
export default {
  props: ['id', 'name'],
  // ...
}

3. 在组件中使用$route对象

当需要在组件内部直接使用$route对象时,需要使用 $route.params 或 $route.query 来获取路由参数。

// 组件定义
export default {
  data() {
    return {
      id: this.$route.params.id,
      name: this.$route.query.name
    }
  },
  // ...
}

在上述组件定义中,我们使用了组件的data函数来初始化组件数据。我们通过访问$route.params.id 和 $route.query.name获取路由参数,并将其保存在组件的data属性中。

示例

在上述攻略中,我们通过三种方式演示了如何进行Vue路由传参props解耦。接下来,我们通过两个示例来进一步说明这三种方式的用法。

示例一:用户详情页

假设我们需要展示一个用户的详细信息,在用户列表页中点击某个用户,即可跳转到用户详情页,并且在用户详情页中可以展示改用户的完整信息。

路由定义

const router = new VueRouter({
  routes: [
    {
      path: '/user/:id',
      component: UserDetail,
      props: true
    }
  ]
})

组件定义

<template>
  <div>
    <p>用户名: {{ username }}</p>
    <p>年龄: {{ age }}</p>
    <p>性别: {{ gender }}</p>
  </div>
</template>

<script>
export default {
  props: ['id'],
  data() {
    return {
      username: '',
      age: 0,
      gender: ''
    }
  },
  mounted() {
    // TODO: 根据用户id获取详细信息,填充data中的数据
  }
}
</script>

在上述示例中,我们定义了一个/user/:id的路由,同时将props设置为true。在组件中,我们定义了一个props接收路由参数,并且使用mounted函数来获取用户详细信息,将其填充到组件的data属性中,实现了用户详情页的展示。

示例二:搜索结果展示页

假设我们需要实现一个搜索结果展示页,可以通过关键字搜索相关的文章,并且点击某篇文章可以跳转到该文章详情页。

路由定义

const router = new VueRouter({
  routes: [
    {
      path: '/search',
      component: SearchResult,
      props: (route) => ({ keyword: route.query.keyword })
    },
    {
      path: '/article/:id',
      component: ArticleDetail,
      props: true
    }
  ]
})

在上述示例中,我们定义了一个/search的路由用于搜索结果展示页,同时使用了一个函数来返回props,props中包含了搜索关键字。

我们还定义了一个 /article/:id的路由用于文章详情页,同样地,我们将props设置为true。

组件定义

<template>
  <div>
    <h2>{{ keyword }}的搜索结果</h2>
    <ul>
      <li v-for="article in articles" :key="article.id">
        <router-link :to="{ path: '/article/' + article.id }">
          {{ article.title }}
        </router-link>
      </li>
    </ul>
  </div>
</template>

<script>
export default {
  props: ['keyword'],
  data() {
    return {
      articles: []
    }
  },
  mounted() {
    // TODO: 根据关键字搜索相关文章
    // 将搜索结果存储在this.articles中
  }
}
</script>

在上述示例中,我们定义了一个搜索结果展示页组件,在组件中定义了props接收路由参数keyword,并且使用mounted函数来进行搜索操作。

在展示搜索结果时,我们使用v-for遍历this.articles数组,并通过router-link来实现点击文章标题到文章详情页的跳转。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Vue路由传参props解耦的三种方式小结 - Python技术站

(0)
上一篇 2023年5月28日
下一篇 2023年5月28日

相关文章

  • 五分钟教你使用vue-cli3创建项目(新手入门)

    下面我将为您详细讲解“五分钟教你使用vue-cli3创建项目(新手入门)”的完整攻略。 简介 Vue CLI 是一个基于 Vue.js 进行快速开发的完整系统,可用于快速搭建项目。Vue CLI3 是 Vue CLI 的升级版本,提供了更友好、更强大、更快捷的项目脚手架。 环境准备 在使用 Vue CLI3 创建项目之前,您需要先确保安装了 Node.js …

    Vue 2023年5月29日
    00
  • Vue使用electron转换项目成桌面应用方法介绍

    Vue使用Electron转换项目成桌面应用方法介绍 Electron是基于Chromium和Node.js开发的流行桌面应用开发框架,它可以让你使用前端技术(如HTML、CSS和JavaScript)开发出桌面应用。而Vue是一款易用、高效的前端框架,它可以让我们快速构建响应式、可维护的Web应用程序。将二者结合起来,可以让我们更加高效地开发出高质量的桌面…

    Vue 2023年5月28日
    00
  • vant 时间选择器–开始时间和结束时间实例

    vant 时间选择器是一个基于Vue.js的组件库,其中包含了常用的时间选择器组件。下面就详细讲解vant 时间选择器的开始时间和结束时间实例的攻略。 一、引入组件 在使用 vant 时间选择器组件之前,需要先在项目中引入这个组件库。 <!– 引入样式文件 –> <link rel="stylesheet" href…

    Vue 2023年5月29日
    00
  • vitejs预构建理解及流程解析

    ViteJS 预构建理解及流程解析 简介 ViteJS 是一款基于 ES modules 构建的前端开发工具,它具有快速的开发速度和优秀的开发体验。其中,预构建是 ViteJS 的重点特性之一。 预构建,即根据源代码提前展开模块之间的依赖关系,以在后续的开发过程中减少许多不必要的耗时和额外请求。具体而言,预构建会将每个模块和它所依赖的模块转化为一个 Java…

    Vue 2023年5月27日
    00
  • Vuex的实战使用详解

    Vuex的实战使用详解 Vuex是Vue.js官方提供的状态管理库,可以帮助我们更方便地管理Vue组件中的状态(数据)。下面将介绍Vuex的使用方法和常见应用场景。 安装和使用 安装:使用npm或yarn安装Vuex bash npm install vuex –save # 或者 yarn add vuex 在Vue项目中引入Vuex,并创建store实…

    Vue 2023年5月28日
    00
  • vue的表单数据收集案例之基本指令和自定义指令详解

    Vue的表单数据收集是Vue.js中的一个重要的知识点,它可以帮助我们快速收集表单数据并进行处理。而在实际开发中,我们将会经常使用到Vue中的指令来帮助我们实现表单数据收集。其中,基本指令包括v-model、v-bind等,自定义指令主要指基于v-model进行二次封装的自定义指令。下面,我们将具体讲解关于Vue的表单数据收集案例之基本指令和自定义指令的攻略…

    Vue 2023年5月27日
    00
  • Vue 2源码解读$mount函数原理

    下面就是“Vue 2源码解读$mount函数原理”的详细攻略。 什么是$mount函数 Vue 2中$mount函数是Vue实例的生命周期函数之一。当实例被创建之后,需要通过$mount方法将其挂载到某个元素上才能开始渲染。$mount函数会将模板编译为渲染函数,并且将渲染函数和虚拟DOM挂载到实例上。在挂载后,Vue实例就可以响应用户的交互事件,并且动态更…

    Vue 2023年5月27日
    00
  • vue实现打卡功能

    下面是vue实现打卡功能的完整攻略。 1. 确定需求和功能点 在开始实现打卡功能之前,我们需要先明确需求和功能点。一般来说,一个打卡功能至少包含以下几个方面: 打卡地点的定位和显示 打卡时间的记录和展示 打卡成功/失败的反馈提示 打卡数据的保存和更新 根据实际业务需求,我们可以在此基础之上进行扩展和优化。 2. 实现地理位置定位 首先,我们需要实现打卡地点的…

    Vue 2023年5月27日
    00
合作推广
合作推广
分享本页
返回顶部