首页 > 其他分享 >nuxt 路由跳转和传参方式

nuxt 路由跳转和传参方式

时间:2025-01-07 21:34:40浏览次数:1  
标签:传参 vue params 跳转 query id 路由 nuxt

nuxt-link 用于页面间的跳转,并且支持传递参数。可以通过两种方式传参:

a. 使用 params 传参

params 是通过动态路由来传递的参数,通常用于 URL 的路径中。

<ul>
  <li>
    <nuxt-link to="/">首页</nuxt-link>
  </li>
  <li>
    <nuxt-link :to="{ name: 'about' }">关于</nuxt-link>
  </li>
  <li>
    <nuxt-link :to="{ name: 'news', params: { newsId: 3306 } }">params传参</nuxt-link>
  </li>
  <li>
    <nuxt-link :to="{ path: '/news', query: { newsId: 3306 } }">query传参</nuxt-link>
  </li>
</ul>

b. params vs query

  • params: 用于动态路由的参数,通常与路由的 name 配合使用。params 是嵌入在 URL 路径中的,如 /news/:newsId
  • query: 用于查询参数,通常附加在 URL 的 ? 后面,如 /news?newsId=3306

2. 使用 JavaScript 路由跳转传参

在 JavaScript 中,你可以通过 $router.push 来跳转页面并传递参数。可以选择使用 pathparamsquery 来传参。

a. 字符串方式传参

this.$router.push('/project?id=123')  // 传递查询参数

b. params 方式传参

this.$router.push({ name: 'project', params: { id: 123 } })
  • 这里的 name 指的是 Nuxt 自动生成的路由名称,不是文件路径的名称。

c. query 方式传参

this.$router.push({ path: '/project', query: { id: 123 } })

3. 路由配置和自动生成的路由名称

假设 pages 目录结构如下:

pages/
  └── user/
      ├── index.vue
      └── one.vue
  └── index.vue

Nuxt 自动生成的路由配置如下:

router: {
  routes: [
    {
      name: 'index',
      path: '/',
      component: 'pages/index.vue'
    },
    {
      name: 'user',
      path: '/user',
      component: 'pages/user/index.vue'
    },
    {
      name: 'user-one',
      path: '/user/one',
      component: 'pages/user/one.vue'
    }
  ]
}
  • name: 是根据 pages 目录自动生成的,不是你手动指定的。
  • params 传参时,需要使用路由的 name 而不是路径。

4. 接收参数

接收到的参数可以通过 $route.params$route.query 来访问。

a. 在模板中接收参数

<p>Path参数:{{$route.params.id}}</p>
<p>Query参数:{{$route.query.id}}</p>

b. 在组件生命周期中接收参数

  1. mounted 中接收

    mounted() {
      console.log(this.$route.params.id)
      console.log(this.$route.query.id)
    }
    
  2. asyncData 中接收
    asyncData 是 Nuxt 提供的一个特殊钩子,用来在页面渲染前获取数据。

    asyncData({ params, query }) {
      console.log('id', params.id)
      console.log('id', query.id)
    }
    

5. 动态路由传参

动态路由的参数通常是通过文件名加上 :(如 _id.vue)来定义的。

a. 动态路由配置

假设你的目录结构是这样的:

pages/
  └── test/
      └── _id.vue
      └── list.vue

Nuxt 会自动生成以下路由:

{
  name: 'test-id',
  path: '/test/:id',
  component: 'pages/test/_id.vue'
}
<ul>
  <li v-for="item of arr" :key="item.id">
    <nuxt-link :to="{ name: 'test-id', params: { id: item.id } }">
      {{ item.title }}
    </nuxt-link>
  </li>
</ul>

这里通过 params 传递了 id 参数,确保动态路由使用的是正确的路由名称。

6. 路由嵌套

如果你的页面有嵌套的子路由,Nuxt 提供了嵌套视图的功能。你需要创建一个目录和相应的 Vue 文件来定义子视图。

a. 嵌套路由的目录结构

pages/
  └── test2/
      └── list/
          └── index.vue  // 默认视图
          └── _id.vue    // 子组件视图
      └── list.vue       // 父视图
<ul>
  <li v-for="item of arr" :key="item.id">
    <nuxt-link :to="{ name: 'test2-list-id', params: { id: item.id } }">
      {{ item.title }}
    </nuxt-link>
  </li>
</ul>

<nuxt-child />  <!-- 用于显示嵌套的子组件视图 -->
  • 通过 nuxt-child 组件来渲染子路由对应的视图。

总结

  • nuxt-link 用于在模板中跳转并传递路由参数,可以通过 paramsquery 传递参数。
  • $router.push 提供了在 JavaScript 代码中跳转并传递参数的方式,可以使用字符串、paramsquery
  • 动态路由 通过文件名的方式(例如 _id.vue)来实现,路由参数会被传递到相应的组件中。
  • 嵌套路由 通过在目录结构中定义子组件,使用 <nuxt-child /> 来显示嵌套的视图。

标签:传参,vue,params,跳转,query,id,路由,nuxt
From: https://www.cnblogs.com/jocongmin/p/18658410

相关文章

  • nuxt 生命周期钩子
    在Nuxt3和Vue3中,生命周期钩子函数是控制组件生命周期(从创建到销毁过程中的一系列阶段)的重要部分。虽然Nuxt3是基于Vue3的,但Nuxt3增加了许多特殊的生命周期钩子来帮助处理服务器端渲染(SSR)和客户端渲染(CSR)中的不同场景。以下是Nuxt3和Vue3的常用生命周期钩子,......
  • nuxt3 使用pinia
    Pinia是Vue3官方推荐的状态管理库,替代了Vuex。在Nuxt3中,Pinia被很好地集成并支持,在官方文档中也明确推荐使用它来管理全局状态。如何在Nuxt3中使用Pinia以下是如何在Nuxt3项目中使用Pinia的步骤:1.安装Pinia首先,你需要安装Pinia:npminstallpinia2.在......
  • xxl_job系列---【Glue(java)模式如何通过动态参数传参?】
    1.编辑GLUE(Java)模式的定时任务这里以传递json参数为例:修改任务参数:{"startDate":"","endDate":"","desc":"入参日期格式:yyyyMMdd"}保存。2.编辑此定时任务的GLUE脚本import添加:importcom.xxl.job.core.context.XxlJobHelper;importcn.hutool......
  • 小红书跳转微信卡片源码
    什么是小红书卡片?如下图所示,有一个卡片,有封面图、有标题,这张卡片可以点击,点击进去可以直接跳转到微信并且自动打开一个页面,这个页面展示一个二维码,这个二维码可以长按加微信。这边是一个小红书卡片的基本的样子。那么市面上这类卡片如何制作?以下为卡片部分源代码演示站:ht......
  • 如何调整主页跳转设置以确保显示最新内容
    用户发现访问域名时,页面显示的是旧版本的内容,而希望打开该域名时直接展示最新的网站首页。这种现象可能是由于缓存、重定向设置或程序功能配置不当引起的。解决方案:检查缓存设置:浏览器和服务器端的缓存机制可能导致旧页面被优先加载。首先尝试清除浏览器缓存,并通过无痕模式重......
  • vue-router的跳转与location.href有什么不同?
    vue-router的跳转与location.href的主要区别体现在它们的使用场景、功能特性以及对Vue.js单页面应用(SPA)的支持上。使用场景:vue-router是Vue.js官方的路由管理器,专为Vue.js设计,用于构建单页面应用(SPA)。它允许你通过定义一系列的路由规则,来管理不同的URL路径如何映......
  • WinForm通过反射调用dll中的串口传参数并获取返回值
    现有一dll文件MyDll.dll,里边封装了一窗口FormA,现通过FormB调用MyDll.dll中的FormA窗口,传入参数并获取到FormA的返回值(通过FormA中的按钮触发,通过FormB中的委托方法实现返回值)1.MyDll.dll文件中的FormA方法定义委托方法和该委托的事件publicdelegatevoidfrm......
  • 国产文本编辑器EverEdit - 如何让输出窗口的日志具有双击跳转到文件指定行的功能
    1开发参考:编写脚本时如何向输出窗口打印可跳转到文件位置的日志1.1应用场景  编写脚本时,有时对文本进行分析,需要将提示信息打印到输出窗口,同时希望将文本的行、列信息也打印在日志中,最好是双击日志信息可以跳转到文件的对应行和列,就像VisualStudio编译报错可以双击跳......
  • 如何创建抖音卡片链接跳转微信?详细教程
    抖音私信卡片是抖音平台内一种特殊的分享和交互方式。它实际上是一种链接的展示形式,但比直接发送链接更安全,不会导致账号异常。卡片的内容可以自定义,因此更能吸引用户的点击。抖音私信卡片的主要功能包括:跳转微信:用户点击卡片后,系统会自动打开微信并显示指定的二维码,用户长......
  • 抖音跳转卡片教程来了!外面卖99一张的跳转卡片,点击直达微信添加好友界面,高效引流!!
    抖音私信卡片是抖音平台内一种特殊的分享和交互方式。卡片的内容可以自定义,因此更能吸引用户的点击。抖音私信卡片的主要功能包括:跳转微信:用户点击卡片后,系统会自动打开微信并显示指定的二维码,用户长按识别即可添加好友或进入群聊。不要急,我们先来看演示视频了解一下,视频教......