el-carousel-item自动重复渲染,使用nanoid让重复的元素包含不同的id

<template>
  <div class="page-container">
    <div class="m-title">轮播图</div>
    <el-carousel height="400px"  :autoplay="true">
      <el-carousel-item v-for="(item, index) in carouselList" :key="index">
        <div class="m-item">
          <cl-line
            v-if="item.line?.id"
            :id="item.line.id + nanoid()"
            :list="item.line.list"
            width="400px"
            height="400px"
          ></cl-line>
          <cl-pie
            v-if="item.pie?.id"
            :id="item.pie?.id + nanoid()"
            :list="item.pie?.list"
            width="400px"
            height="400px"
          ></cl-pie>
          <cl-bar
            v-if="item.bar?.id"
            :id="item.bar?.id + nanoid()"
            :list="item.bar?.list"
            width="400px"
            height="400px"
          ></cl-bar>
        </div>
      </el-carousel-item>
    </el-carousel>
  </div>
</template>

<script lang="ts" setup>
import { onMounted } from 'vue'
import { nanoid } from 'nanoid'

let carouselList = [
  {
    line: {
      id: 'line-1',
      list: [
        { value: 1048, name: 'Mon' },
        { value: 735, name: 'Tue' },
        { value: 580, name: 'Wed' },
        { value: 484, name: 'Thu' },
        { value: 300, name: 'Fri' },
      ],
    },
    pie: {
      id: 'pie-1',
      list: [
        { value: 1048, name: 'Mon' },
        { value: 735, name: 'Tue' },
        { value: 580, name: 'Wed' },
        { value: 484, name: 'Thu' },
        { value: 300, name: 'Fri' },
      ],
    },
    bar: {
      id: 'bar-1',
      list: [
        { value: 1048, name: 'Mon' },
        { value: 735, name: 'Tue' },
        { value: 580, name: 'Wed' },
        { value: 484, name: 'Thu' },
        { value: 300, name: 'Fri' },
      ],
    },
  },
  {
    line: {
      id: 'line-2',
      list: [
        { value: 50, name: 'Mon' },
        { value: 735, name: 'Tue' },
        { value: 580, name: 'Wed' },
        { value: 484, name: 'Thu' },
        { value: 300, name: 'Fri' },
      ],
    },
  },
]

onMounted(async () => {})
</script>

<style scoped>
.m-title {
  font-size: 20px;
  color: 333;
  font-weight: bold;
  padding: 10px;
}
.m-item {
  background: #fff;
  height: 100%;
  display: flex;
  justify-content: space-between;
}
</style>

人工智能学习网站

https://chat.xutongbao.top

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

徐同保

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值