当前位置: 首页 > article >正文

组件封装-List

对于数组对象渲染列表的组件进行渲染,可支持定制里面的内容与列表外部的内容。

 

子组件

<template>
  <view>
    <view v-for="item in data" :key="item.id" class="check-list-item">
      <nut-checkbox v-if="showCheckbox" :label="item.supplierId" class="w-full m_checkbox">
        <slot name="item" :item="item"></slot>
      </nut-checkbox>
      <view v-else>
        <slot name="item" :item="item"></slot>
      </view>
    </view>
  </view>
</template>
<script setup lang="ts" generic="T extends Record<string, any> & { id: any }">
import { PropType, defineSlots } from 'vue';

defineProps({
  data: {
    // eslint-disable-next-line no-undef
    type: Array as PropType<T[]>,
    required: true
  },
 // 根据条件定制列表外内容
  showCheckbox: {
    type: Boolean,
    default: false
  },
  height: {
    type: [String, Number],
    default: ''
  },
  loading: {
    type: Boolean,
    default: false
  }
});

defineSlots<{
  // eslint-disable-next-line
  item(_props: { item: T }): any;
}>();
</script>

<style lang="scss">
.check-list-box {
  overflow-y: scroll;

  .check-list-item {
    // box-shadow: 2px 2px 8px 0 #9999991a;
    border-radius: 4px;
  }
}
</style>

父组件

  <CheckList
        v-model:selected="selected"
        class="mt-[16px]"
        :data="detail?.bargainSupplierVos || []"
        :loading="loading"
        :height="`calc(100vh - 236px - env(safe-area-inset-top))`"
        :show-checkbox="status === 'fixed-point'"
      >
    <!-- 定制列表内部的内容 -->
        <template #item="{ item }">
          <view @click="(e) => goDetail(e, item)">
    <!-- 封装内容的每一项的组件 -->
            <QuoteCard :data="item" :currency="Currency[detail?.briefProcureReq?.currency as any] || 'CNY'" />
          </view>
        </template>
      </CheckList>


http://www.kler.cn/a/517357.html

相关文章:

  • 笔试-二维数组
  • 侧边导航(Semi Design)
  • 做Midjourney最好图文教程-提示词公式以及高级参数讲解
  • Vue2下篇
  • ubuntu电脑调用摄像头拍摄照片
  • 逐笔成交逐笔委托Level2高频数据下载和分析:20250124
  • kettle与Springboot的集成方法,完整支持大数据组件
  • PySide(PyQT)进行SQLite数据库编辑和前端展示的基本操作
  • 使用 Git LFS 管理大文件基本简介
  • Java开发的商城系统怎样
  • Consul持久化配置报错1067---consul_start
  • ansible自动化运维实战--fetch、cron和group模块(5)
  • 【Uniapp-Vue3】uni-icons的安装和使用
  • 使用Mermaid和AI画流程图
  • vue2和vue3指令
  • [操作系统] 深入进程地址空间
  • 机器学习数据集来源
  • Sourcetree:一款高效便捷的Git版本控制客户端
  • UI操作总结
  • c++在线音乐播放器项目开发记录(1)
  • 【Windows】Linux 远程连接工具SecureCRT9.1、SecureFX9.1的安装
  • VScode连接远程Linux服务器环境配置
  • postgresql根据主键ID字段分批删除表数据
  • Python自动化运维:一键掌控服务器的高效之道
  • 【QT】-explicit关键字
  • 如何将使用unsloth微调的模型部署到ollama?