vue路由学习-嵌套路由

本文详细介绍了在Vue中如何定义嵌套路由组件,包括在views中创建新路由组件如Group.vue和Solo.vue,特别是在Solo.vue中使用异步加载并在mounted()中用setTimeout()箭头函数处理。同时,强调了在数组中为每个元素赋予唯一id的重要性。接着,讨论了注册嵌套路由的步骤,主要在index.js中操作。最后,展示了在Home.vue中编写路由链接,并提醒注意数据类型设置,特别是处理数组内对象的情况。
摘要由CSDN通过智能技术生成

1.定义嵌套路由组件

views中生成新路由

Group.vue

<template>
  <div>
    <ul>
      <li v-for="(group, index) in groupArr" :key="index">{{group}}</li>
    </ul>
  </div>
</template>

<script>
  export default {
    data() {
      return {
        groupArr: ['Blackpink', 'Redvelvet', 'Twice', 'Itzy']
      }
    },
  }
</script>

<style lang="css" scoped>

</style>

Solo.vue

<template>
  <div>
    <ul>
    <li v-for="solo in soloArr" :key="solo.id">
      <!-- <a href="???">{{solo.name}}</a> -->
      <router-link :to="`/home/solo/msgdetail/${solo.id}`">{{solo.name}}</router-link>
      <button @click="pushShow(solo.id)">push查看</button>
      <button @click="replaceShow(solo.id)">replace查看</button>
      </li>
  </ul>
  <button @click="$router.back()">back</button>
  <hr>
  <router-view></router-view>
  </div>
</template>

<script>
  export default {
    data() {
      return {
        soloArr: []
      }
    },

    mounted() {
      //模拟ajax请求从后台获取数据
      setTimeout(() => {
        const soloArr = [
          {
            id: 1,
            name: 'Taeyoon',  
          },
          {
            id: 3,
            name: 'Somi',
          },
          {
            id: 5,
            name: 'Jennie',
          },
          {
            id: 9,
            name: 'hyuna',
          },
        ]
        this.soloArr = soloArr
      },1000)
    },

    methods: {
      pushShow (id) {
        this.$router.push(`/home/solo/msgdetail/${id}`)
      },
      replaceShow (id) {
        this.$router.replace(`/home/solo/msgdetail/${id}`)
      }
    },
  }
</script>

<style lang="css" scoped>

</style>

在Solo.vue包含异步显示,放在mounted() { }中使用

setTimeout()的回调函数使用的是箭头函数

在数组中为每个元素设置了专属的id

2. 注册嵌套路由

index.js

import Group from '../views/Group'
import Solo from '../views/Solo'

children: [
        {
          path: '/home/group', // path最左侧的/永远代表根路由
          component: Group
        },
        {
          path: 'solo', // 简化写法
          component: Solo,
          children: [
            {
              path: '/home/solo/msgdetail/:id',
              component: MsgDetail
            }
          ]

3. 编写路由链接

Home.vue

<template>
  <div>
    <h2>home</h2>
    <div>
      <ul class="nav nav-tabs">
        <li><router-link to="/home/group">Group</router-link></li>
        <li><router-link to="/home/solo">Solo</router-link></li>
      </ul>

      <div>
        <router-view></router-view>
      </div>
    </div>
    
  </div>
</template>

补充:注意设置数据的类型是一般数据数组还是对象。也需要考虑数组里面的元素是否是对象

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值