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

yizhihongxing

下面是关于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将页面导出为图片或者PDF

    如果想将 Vue 页面导出为图片或者 PDF,可以使用第三方库html2canvas和jspdf。下面是基本的步骤: 安装依赖库 npm install html2canvas jspdf –save 导入依赖库 import html2canvas from ‘html2canvas’; import jsPDF from ‘jspdf’; 编写导出函数…

    Vue 2023年5月27日
    00
  • vue3.0搭配.net core实现文件上传组件

    下面是详细讲解如何使用Vue3.0搭配.NET Core实现文件上传组件的攻略。 1. 准备工作 首先,你需要安装以下工具和环境: Node.js和npm .NET Core SDK Vue CLI 3 接下来,在.NET Core项目中添加所需的依赖项: dotnet add package Microsoft.AspNetCore.Http dotnet…

    Vue 2023年5月28日
    00
  • vue之将echart封装为组件

    封装echarts为Vue组件并不难,只需要遵循以下步骤即可。 步骤1:安装echarts和vue-echarts 使用npm安装echarts和vue-echarts依赖: npm install echarts vue-echarts –save 步骤2:创建一个Echarts.vue组件 在src/components目录下创建一个Echarts.v…

    Vue 2023年5月28日
    00
  • vue实现pdf文档在线预览功能

    下面是详细的讲解“vue实现pdf文档在线预览功能”的完整攻略: 确认需求 在开始实现在线预览PDF文档的功能之前,我们需要确定需求。在本节中,我们需要考虑以下问题: 我们将使用哪个PDF库来解析和显示PDF文档? 我们将如何将PDF文档加载到我们的Vue应用程序中? 我们将如何实现PDF文档的渲染和导航? 选择PDF库 在Vue应用程序中实现PDF预览功能…

    Vue 2023年5月28日
    00
  • vuejs实现ready函数加载完之后执行某个函数的方法

    Vue.js是一种流行的JavaScript框架,用于构建高度可交互的页面。实现在Vue.js的ready函数加载完之后执行某个函数的方法比较简单,以下是详细攻略: 在Vue.js的实例化中定义“mounted”生命周期钩子函数。这个函数会在Vue.js的实例化加载到DOM之后立即执行,因此是最佳场所来执行要在Vue.js的ready函数之后执行的函数。例如…

    Vue 2023年5月28日
    00
  • vue项目中$t()的意思是什么

    $t() 是 Vue 项目中用于实现多语言国际化的方法。它的作用是将被翻译的文本和当前语言转换成对应的文本。 1. 安装和配置 i18n 库 使用 $t() 的前提是,你需要在 Vue 项目中安装和配置好 i18n 库。下面是安装和配置 i18n 库的示例代码: import Vue from ‘vue’; import VueI18n from ‘vue-…

    Vue 2023年5月27日
    00
  • Vue.Js及Java实现文件分片上传代码实例

    我来为你详细讲解Vue.js及Java实现文件分片上传代码实例的完整攻略。 背景知识 在介绍代码实现前,先了解一下文件分片上传的概念。文件分片上传是指将文件划分为多个小块,通过异步上传的方式逐一上传,直到整个文件全部上传完毕。这种方式可以有效地提高大文件的上传速度和稳定性。 Vue.js实现文件分片上传 前端代码实现 首先,在Vue.js中使用axios库发…

    Vue 2023年5月28日
    00
  • Vue2.x 项目性能优化之代码优化的实现

    为了优化Vue2.x项目的性能,代码优化是非常重要的一部分。下面是一些可以实现的代码优化技巧: 1. 使用Vue的异步组件 Vue的异步组件用于延迟加载组件,避免不必要的资源浪费。异步组件可以通过Vue.component或Vue.extend创建。 以下代码展示了如何在Vue中使用异步组件: // 普通组件 import NormalComp from ‘…

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