Vue3之路由跳转与参数获取方式

下面是关于Vue3路由跳转与参数获取的完整攻略。

1. 安装Vue Router

在开始使用Vue3路由时,需要先安装Vue Router。可以通过npm安装,命令如下:

npm install vue-router@4.0.0-beta.8

安装完成后,在main.js中引入Vue Router并使用。

import { createRouter, createWebHistory } from 'vue-router'
import App from './App.vue'

const router = createRouter({
  history: createWebHistory(),
  routes: [...]
})

createApp(App).use(router).mount('#app')

2. 创建路由信息

在路由的配置中需要设置路由的路径与对应的组件。下面是一个简单的路由信息示例:

import Home from './views/Home.vue'
import About from './views/About.vue'

const routes = [
  { path: '/', component: Home },
  { path: '/about', component: About }
]

3. 路由跳转

路由跳转是指在浏览器中切换不同的路由,这可以通过<router-link>标签和router.push方法实现。

3.1 <router-link>标签

以下是一个简单的使用<router-link>标签的跳转方式:

<router-link to="/">Home</router-link>

to属性指定路由的路径。

3.2 router.push方法

在Vue3中,使用this.$router.push()方法实现路由跳转。以下是一个简单的路由跳转示例:

 methods: {
   goToAboutPage() {
     this.$router.push('/about')
   }
 }

4. 参数获取

路由参数是URL中的一部分,通常用于指定页面的特定内容或条件。在Vue3中,可以使用$route对象来获取路由参数。

4.1 获取参数

export default {
  mounted() {
    console.log(this.$route.params.id) // 获取路由参数
  }
}

在路由信息中,可以通过使用path-to-regexp匹配规则来获取参数,以下是一个带参数的路由信息示例:

const routes = [
  { path: '/:id', component: Product }
]

在组件中,通过this.$route.params获取参数值。

4.2 动态改变参数

在Vue3中,可以通过使用$router.push()方法并传递参数,来动态改变路由参数。以下是一个简单的路由参数动态改变示例:

methods: {
  changeRouteParam() {
    this.$router.push({ params: { id: 2 } })
  }
}

示例

示例1:路由跳转与参数获取

在以下实例中,点击一个商品,跳转到商品详情页面并展示当前商品的详细信息。

1. 创建路由信息

import ProductDetail from './views/ProductDetail.vue'

const routes = [
  { path: '/', component: Home },
  { path: '/products/:id', component: ProductDetail, props: true }
]

2. 在Home页面中展示商品列表

<template>
  <div>
    <h2>Products</h2>
    <div v-for="product in products" :key="product.id">
      <h3>{{ product.name }}</h3>
      <p>{{ product.description }}</p>
      <button @click="goToProductDetailPage(product.id)">View Details</button>
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      products: [
        { id: 1, name: 'Product A', description: 'Product A description' },
        { id: 2, name: 'Product B', description: 'Product B description' },
        { id: 3, name: 'Product C', description: 'Product C description' }
      ]
    }
  },
  methods: {
    goToProductDetailPage(id) {
      this.$router.push({ path: `/products/${id}`, props: true })
    }
  }
}
</script>

3. 在ProductDetail页面中展示当前商品的详细信息

<template>
  <div>
    <h2>{{ product.name }}</h2>
    <p>{{ product.description }}</p>
  </div>
</template>

<script>
export default {
  props: {
    id: {
      type: String,
      required: true
    }
  },
  computed: {
    product() {
      return this.products.find(product => product.id == this.id)
    }
  },
  data() {
    return {
      products: [
        { id: 1, name: 'Product A', description: 'Product A description' },
        { id: 2, name: 'Product B', description: 'Product B description' },
        { id: 3, name: 'Product C', description: 'Product C description' }
      ]
    }
  }
}
</script>

示例2:动态改变路由参数

在以下实例中,点击一个按钮,动态切换路由参数。

1. 创建路由信息

import ProductDetail from './views/ProductDetail.vue'

const routes = [
  { path: '/', component: Home },
  { path: '/products/:id', component: ProductDetail, props: true }
]

2. 在Home页面中展示商品列表

<template>
  <div>
    <h2>Products</h2>
    <div v-for="product in products" :key="product.id">
      <h3>{{ product.name }}</h3>
      <p>{{ product.description }}</p>
      <button @click="changeRouteParam(product.id)">View Details</button>
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      products: [
        { id: 1, name: 'Product A', description: 'Product A description' },
        { id: 2, name: 'Product B', description: 'Product B description' },
        { id: 3, name: 'Product C', description: 'Product C description' }
      ]
    }
  },
  methods: {
    changeRouteParam(id) {
      this.$router.push({ params: { id } })
    }
  }
}
</script>

3. 在ProductDetail页面中展示当前商品的详细信息

<template>
  <div>
    <h2>{{ product.name }}</h2>
    <p>{{ product.description }}</p>
    <button @click="changeRouteParam()">Change Route Param to 2</button>
  </div>
</template>

<script>
export default {
  props: {
    id: {
      type: String,
      required: true
    }
  },
  computed: {
    product() {
      return this.products.find(product => product.id == this.id)
    }
  },
  data() {
    return {
      products: [
        { id: 1, name: 'Product A', description: 'Product A description' },
        { id: 2, name: 'Product B', description: 'Product B description' },
        { id: 3, name: 'Product C', description: 'Product C description' }
      ]
    }
  },
  methods: {
    changeRouteParam() {
      this.$router.push({ params: { id: 2 } })
    }
  }
}
</script>

以上就是关于Vue3路由跳转与参数获取的完整攻略,包含了路由信息创建、路由跳转和参数获取,以及两个示例说明。希望可以帮助到你。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Vue3之路由跳转与参数获取方式 - Python技术站

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

相关文章

  • vue项目的html如何引进public里面的js文件

    在Vue项目中,我们可以将静态资源(例如图片、样式表、JavaScript文件等)放在public文件夹中,然后在HTML中通过引入该文件夹中的文件来使用它们。以下是引入public文件夹中JavaScript文件的详细步骤: 1.将需要引入的JavaScript文件放在public文件夹中(例如,创建一个名为script.js的文件)。 2.在HTML模板…

    Vue 2023年5月28日
    00
  • Vue中前端与后端如何实现交互

    在Vue中,前端与后端交互有多种方式可供选择,以下是其中两种常用的方式。 1. RESTful API REST(Representational State Transfer, 表式状态转移)是Web应用程序中最常用的API设计风格。Vue前端通过RESTful API与后端交互,前端通过HTTP请求对后端发起请求,获取并处理返回的JSON数据,来完成前端…

    Vue 2023年5月27日
    00
  • Rainbond对前端项目Vue及React的持续部署

    首先,我们需要了解一下Rainbond是什么。Rainbond是一个企业级的容器云平台,可以对各种类型的应用进行持续部署、运维和监控。它提供了一套完整的容器管理和应用编排体系,并支持大规模的分布式架构。 Rainbond对前端项目Vue及React的持续部署需要以下几个步骤: 1. 创建应用 在Rainbond中,首先需要创建一个应用来进行持续部署。可以通过…

    Vue 2023年5月28日
    00
  • vue中的文本空格占位符说明

    当我们在Vue中渲染文本时,可能遇到需要以一些特殊字符或空格填充文本空间的情况。在Vue中可以使用空格占位符来实现这个目的。空格占位符可以让Vue忽略空格和新行符,并保留其在渲染时的空间位置,同时在渲染后不会渲染成空格符。下面是详细的说明及示例。 空格占位符 在Vue中,空格占位符采用&nbsp;的HTML实体形式进行表示。它可以在文本中表示空格,并…

    Vue 2023年5月27日
    00
  • Vue.js的高级面试题(附答案)

    下面我将详细讲解“Vue.js的高级面试题(附答案)”的完整攻略。 一、背景 在Vue.js开发中,面试官通常会问一些高级问题来考察开发者使用Vue.js的深度和广度,因此我们需要掌握一些高级面试题。 二、面试题目及答案 1. Vue.js如何实现组件的懒加载? 答:我们可以使用Vue.js中的异步组件(Syntax Async Components)来实现…

    Vue 2023年5月28日
    00
  • Vue收集表单数据和过滤器总结

    Vue收集表单数据和过滤器总结 本文主要介绍Vue中如何收集表单数据和使用过滤器进行数据处理。 收集表单数据 v-model指令 v-model指令可以实现双向数据绑定,将表单元素的值与Vue实例的数据属性进行绑定。当表单元素的值发生变化时,对应的数据属性也会更新。 示例一: <template> <div> <input ty…

    Vue 2023年5月27日
    00
  • 使用vue插件axios传数据的Content-Type及格式问题详解

    使用Vue插件axios传送数据时,我们需要了解有关Content-Type的知识。Content-Type是HTTP头部中的一个域,表示发送数据的媒体类型和字符集。在传送数据时,我们需要根据接受方所期望的Content-Type的类型,构造对应的数据格式来传输数据。 简单来说,如果请求的Content-Type为‘application/json’, 则P…

    Vue 2023年5月28日
    00
  • vue的diff算法知识点总结

    下面是针对“vue的diff算法知识点总结”的完整攻略。 什么是Vue的diff算法 Vue.js是一种高效的UI框架,它利用Virtual DOM(虚拟DOM)技术来实现快速渲染和更新视图。而Vue的diff算法就是为了在Virtual DOM的基础上,更高效地进行视图更新而设计的。 Vue的diff算法的主要思路 Vue的diff算法主要采用的是“先序深…

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