组件封装-List

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

子组件

html 复制代码
<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>

父组件

html 复制代码
  <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>
相关推荐
Dontla23 分钟前
为什么React列表项需要key?(React key)(稳定的唯一标识key有助于React虚拟DOM优化重绘大型列表)
javascript·react.js·ecmascript
凤年徐24 分钟前
【数据结构初阶】单链表
c语言·开发语言·数据结构·c++·经验分享·笔记·链表
德育处主任Pro3 小时前
『React』Fragment的用法及简写形式
前端·javascript·react.js
CodeBlossom3 小时前
javaweb -html -CSS
前端·javascript·html
CodeCraft Studio3 小时前
【案例分享】如何借助JS UI组件库DHTMLX Suite构建高效物联网IIoT平台
javascript·物联网·ui
打小就很皮...4 小时前
HBuilder 发行Android(apk包)全流程指南
前端·javascript·微信小程序
闪电麦坤955 小时前
数据结构:递归的种类(Types of Recursion)
数据结构·算法
小熊猫写算法er6 小时前
终极数据结构详解:从理论到实践
数据结构
dancing9996 小时前
cocos3.X的oops框架oops-plugin-excel-to-json改进兼容多表单导出功能
前端·javascript·typescript·游戏程序
萌萌哒草头将军7 小时前
🚀🚀🚀Prisma 发布无 Rust 引擎预览版,安装和使用更轻量;支持任何 ORM 连接引擎;支持自动备份...
前端·javascript·vue.js