Vue路由跳转与接收参数的实现方式

Vue路由跳转与接收参数的实现方式可以通过以下步骤完成:

  1. 安装 vue-router 插件

vue-router 是 Vue.js 官方的路由管理插件,需要先安装并在项目中引入。

可以使用 npm 进行安装,命令如下:

npm install vue-router --save
  1. 创建路由对象

在项目中创建一个 router.js 文件,并在该文件中创建一个路由对象,例如:

import Vue from 'vue'
import Router from 'vue-router'
import Home from '@/components/Home'
import Detail from '@/components/Detail'

Vue.use(Router)

export default new Router({
  routes: [
    {
      path: '/',
      name: 'Home',
      component: Home
    },
    {
      path: '/detail/:id',
      name: 'Detail',
      component: Detail
    }
  ]
})

在上面代码中,定义了两个路由,分别是 //detail/:id,分别对应了 HomeDetail 组件。

其中 /:id 表示参数,接收参数的方式下一步进行讲解。

  1. 跳转路由并传递参数

使用 router-link 组件实现路由跳转,并通过 to 属性指定路由路径。

例如,在 Home 组件中,通过 router-link 跳转到 Detail 组件,并传递参数 id

<router-link :to="{name: 'Detail', params: {id: 123}}">详情</router-link>

在上面代码中,使用了对象的方式,其中 name 表示跳转的路由名称,params 表示要携带的参数,传递的参数为 {id: 123}

  1. 接收传递的参数

Detail 组件中,可以通过 $route 对象拿到传递过来的参数。

例如,在 Detail 组件中,可以通过以下方式获取传递的参数:

export default {
  name: 'Detail',
  methods: {
    getParams() {
      const id = this.$route.params.id
      console.log(id) // 输出:123
    }
  }
}

在上面代码中,通过 $route.params.id 获取传递的参数。

示例一:

下面是一个完整的示例,通过列表页跳转到详情页,并传递参数 id

<!-- Home.vue -->
<template>
  <div>
    <ul>
      <li v-for="item in list" :key="item.id">
        <router-link :to="{name: 'Detail', params: {id: item.id}}">{{item.title}}</router-link>
      </li>
    </ul>
  </div>
</template>

<script>
export default {
  name: 'Home',
  data() {
    return {
      list: [
        {id: 1, title: '文章一'},
        {id: 2, title: '文章二'},
        {id: 3, title: '文章三'},
      ]
    }
  }
}
</script>
<!-- Detail.vue -->
<template>
  <div>
    <h2>{{title}}</h2>
    <p>{{content}}</p>
  </div>
</template>

<script>
import axios from 'axios'

export default {
  name: 'Detail',
  data() {
    return {
      title: '',
      content: ''
    }
  },
  methods: {
    getDetail() {
      const id = this.$route.params.id
      axios.get(`/detail?id=${id}`).then(res => {
        this.title = res.data.title
        this.content = res.data.content
      })
    }
  },
  created() {
    this.getDetail()
  }
}
</script>

在上面代码中,通过 $route.params.id 获取传递的参数,并通过 axios 发送请求获取对应的数据,最终渲染在页面上。

示例二:

下面是另一个示例,通过路由参数传递用户名和年龄,展示在用户中心页面:

<!-- App.vue -->
<template>
  <div id="app">
    <router-view></router-view>
  </div>
</template>

<script>
import router from '@/router'

export default {
  name: 'App',
  methods: {
    goToUserCenter() {
      const username = 'Jack'
      const age = 28
      router.push({name: 'UserCenter', params: {username, age}})
    }
  }
}
</script>
<!-- UserCenter.vue -->
<template>
  <div>
    <h2>{{title}}</h2>
    <p>{{content}}</p>
  </div>
</template>

<script>
export default {
  name: 'UserCenter',
  data() {
    return {
      username: '',
      age: ''
    }
  },
  created() {
    this.username = this.$route.params.username
    this.age = this.$route.params.age
  },
  computed: {
    title() {
      return `欢迎你,${this.username},你的年龄是 ${this.age} 岁。`
    },
    content() {
      return '这是你的个人中心页面。'
    }
  }
}
</script>

在上面代码中,通过 router-link 跳转到 UserCenter 组件,并通过 params 传递参数,最终展示在页面中。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Vue路由跳转与接收参数的实现方式 - Python技术站

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

相关文章

  • 玩转Koa之核心原理分析

    “玩转Koa之核心原理分析”是一篇讲解Koa框架核心原理的文章,下面是该攻略的完整讲解: 玩转Koa之核心原理分析 什么是Koa Koa是一个轻量级的Node.js web框架,由 Express 幕后的团队设计开发,同样基于中间件思想,以更优雅、简洁的语法和更强大的错误处理能力,让 Web 开发变得更加得简单、快速和可靠。 Koa的核心原理 Koa的核心原…

    Vue 2023年5月28日
    00
  • Vue学习笔记进阶篇之函数化组件解析

    Vue学习笔记进阶篇之函数化组件解析,主要涉及Vue中的函数化组件,对于Vue的一些高级使用场景有很大的帮助作用。在本篇攻略中,我将为大家详细介绍函数化组件的概念、特点以及使用方法,并且会给出一些实际的使用示例。 什么是函数化组件 函数化组件,简称函数组件,是Vue中一种新的组件书写方式。与传统的Vue组件相比,函数组件去掉了<template>…

    Vue 2023年5月27日
    00
  • 在 Vue.js中优雅地使用全局事件的方法

    在 Vue.js 中,全局事件可以在不同组件之间传递信息。但是如果使用不合适,会导致代码变得混乱和难以维护。下面让我们看一下如何优雅地使用 Vue.js 中的全局事件。 什么是全局事件 在 Vue.js 中,我们可以使用自定义事件系统来在不同组件之间传递信息。在根组件中使用 $emit 方法触发自定义事件,在其他组件中使用 $on 监听自定义事件。 全局事件…

    Vue 2023年5月28日
    00
  • Vue项目中使用jsonp抓取跨域数据的方法

    使用jsonp抓取跨域数据是前端开发中常用的一种方法,而在Vue项目中使用jsonp抓取跨域数据则需要注意一些细节。下面是Vue项目中使用jsonp抓取跨域数据的完整攻略: 1.概述 前端的同学们都知道,由于浏览器的同源策略限制,导致 Ajax 请求不能跨域。而 JSONP 是一种跨域请求的解决方案,可以通过 script 标签来实现跨域请求。Vue.js …

    Vue 2023年5月28日
    00
  • Vue响应式添加、修改数组和对象的值

    Vue响应式添加、修改数组和对象的值,主要有两种方式:直接赋值、调用特定的方法。 一、直接赋值 当通过直接赋值的方式向数组或对象添加/修改元素时,Vue会监听并更新视图。例如: 1、向对象中添加新属性 export default { data() { return { userInfo: { name: ‘Alice’, age: 18 } } }, me…

    Vue 2023年5月28日
    00
  • Vuex 快速入门(简单易懂)

    Vuex 快速入门(简单易懂) 前言 Vuex是Vue.js的一个状态管理工具,可以方便地处理组件之间的数据共享问题。本文将介绍Vuex的基本概念和使用方法。 Vuex的基本概念 Vuex包含了五个基本概念: State:存储数据的地方,可以在组件中直接访问,但是不能直接修改 Getter:相当于State的计算属性,可以根据State计算出新的值,并缓存起…

    Vue 2023年5月27日
    00
  • 带你一步步从零搭建一个Vue项目

    让我为您详细讲解“带你一步步从零搭建一个Vue项目”的完整攻略。 前提条件 在开始此过程之前,您需要安装以下工具:- Node.js(建议使用官方稳定版本)- Visual Studio Code 或其他文本编辑器- 命令行工具(例如终端或Git Bash) 第一步:创建项目 使用 Vue CLI 创建一个新的 Vue 项目。在终端中输入以下命令: vue …

    Vue 2023年5月28日
    00
  • 基于Vue.js实现数字拼图游戏

    以下是“基于Vue.js实现数字拼图游戏”的完整攻略。 1. 准备工作 在开始编写数字拼图游戏之前,我们需要安装Vue.js和一些相关的依赖。可以使用以下命令进行安装: npm install -g vue-cli vue init webpack my-project cd my-project npm install 2. 组件开发 接下来我们需要编写数…

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