Nuxt项目动态路由带参接参

我们创建一个Nuxt项目
然后 在pages目录下创建 engineering.vue文件 参考代码如下

<template>
  <div>
    <div>工程界面</div>
    <nuxt-child></nuxt-child>
  </div>
</template>

<script>
export default {
  name: 'EngineeringPage'
}
</script>

<style>
</style>

然后在pages下创建一个 engineering文件夹 下面创建一个 Information.vue文件
参考代码如下

<template>
    <div>信息工程</div>
</template>

<script>
export default {
  name: 'InformationgPage'
}
</script>

<style>
</style>

然后在pages下的index.vue组件中编写代码如下

<template>
  <div>
      <ul>
          <li
            v-for = "(item,index) in appList"
            :key = "index"
            @click = "visitApp(item)"
          >{{ item }}</li>
      </ul>
  </div>
</template>

<script>
export default {
  name: 'IndexPage',
  data() {
    return {
      appList: [
          "/engineering",
          "/engineering/Information",
          "/engineering/111"
      ]
    }
  },
  methods:{
    visitApp(url) {
        this.$router.push(url);
    }
  }
}
</script>

我们这里在data中定义了一个响应式数据 是一个字符串数组叫 appList 他下面的每一个字符串对应一个路径
然后 通过v-for将他渲染在列表上
然后定义了一个visitApp事件 点击时将用户点击的节点放入router.push中进行跳转
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
如图可见 我们点击前两个都是能正常跳转的 因为他们都有对应的组件
但我们点第三个 很显然他就找不到了 因为engineering文件夹下并没有111.vue组件
在这里插入图片描述
但这个111是一个路径参数啊 如果 我们每一个id都要在这定义一个vue组件 那可太麻烦了

这就涉涉及到了Nuxt的动态路由 当然 这里指的不是像vue那样动态注入的后台管理路由 只是动态接受路径参数的路由组件

写法就是 例如 你访问 /engineering/111 首先在pages下创建一个engineering 文件夹 然后 在这个文件夹下 创建一个 下划线跟路由参数名的组件 例如 我这个 111 我想要这个参数叫 userid
我们就可以 在engineering 下创建一个 _userId.vue
在这里插入图片描述

参考代码如下

<template>
    <div>我是一个动态接收userId的路由组件</div>
</template>

<script>
export default {
  name: 'InformationgPage'
}
</script>

<style>
</style>

在这里插入图片描述
大家不用担心路径参数影响到原有的子路由
在这里插入图片描述
因为 他会先匹配 如果没有对应的子路由 才去匹配 下划线规则的动态路由
但如果你下面有这种动态路由 你直接访问他
它就会直接给你匹配到这个参数路由上来 因为他会认为你这个参数传了个空进来
在这里插入图片描述

然后 我们在这个动态路由中 也可以拿到传过来的参数 我们改写_userId.vue代码如下

<template>
    <div>我接收到的userId是{{this.$route.params.userId}}</div>
</template>

<script>
export default {
  name: 'InformationgPage'
}
</script>

<style>
</style>

然后我们再访问http://localhost:3000/engineering/111
在这里插入图片描述
他就输出了传过来的路由参数

最后再强调一次 你可以通过 下划线 任何名字 例如 _id.vue _name.vue 命名 然后通过 this. r o u t e . p a r a m s . i d t h i s . route.params.id this. route.params.idthis.route.params.name去取
这个名字是自己定的 只要记得加下划线语法就好

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Nuxt.js中,配置动态路由可以通过使用动态路由数来实现。动态路由数是指在路由路径中使用冒号(:)定义的数,这些数的值可以根据实际情况进行动态匹配。 下面是配置动态路由的步骤: 1. 在Nuxt.js项目的`pages`目录下创建一个文件夹,用于存放与动态路由相关的页面组件。 2. 在该文件夹下创建一个`.vue`文件,作为动态路由的页面组件。例如,创建一个名为`_id.vue`的文件,其中`id`是动态路由数的名称。 3. 在`nuxt.config.js`文件中配置动态路由。找到`router`配置项,并添加一个`extendRoutes`属性,用于扩展路由配置。 ```javascript export default { // ... router: { extendRoutes(routes, resolve) { routes.push({ name: 'dynamic', path: '/dynamic/:id', // 定义动态路由路径 component: resolve(__dirname, 'pages/dynamic/_id.vue') // 指定对应的页面组件 }) } } } ``` 在上述代码中,我们定义了一个名为`dynamic`的路由,路径为`/dynamic/:id`,并指定了对应的页面组件。 4. 在动态路由的页面组件中,可以通过`this.$route.params`来获取动态路由数的值。例如,在`_id.vue`文件中可以这样使用: ```vue <template> <div> <h1>动态路由页面</h1> <p>数值:{{ $route.params.id }}</p> </div> </template> ``` 在上述代码中,我们通过`$route.params.id`获取了动态路由数`id`的值,并在页面中进行展示。 这样,当访问`/dynamic/123`时,就会匹配到动态路由页面组件`_id.vue`,并且可以获取到数值为`123`。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值