在许多应用程序中,展示列表数据是常见的需求。例如,电商网站上的商品列表、社交媒体上的好友列表、博客文章列表等。使用Vue.js,我们可以轻松地创建响应式且可定制的卡片列表组件,以满足这些需求。
本教程将指导你开发一个基本的卡片列表组件,该组件具有以下功能:
首先,在<template>
部分创建组件模板。该模板将定义组件的结构和布局。
<template>
<div class="page">
<van-nav-bar
title="My Bookmark"
left-arrow
fixed
:border="false"
class="nav-bar"
/>
<div class="content">
<van-grid :column-num="2" :border="false" class="grid">
<van-grid-item v-for="item in list" :key="item.id">
<van-card
:thumb="item.image"
title="item.name"
:price="item.price"
:rating="item.rating"
class="card"
/>
</van-grid-item>
</van-grid>
</div>
</div>
</template>
在<script>
部分,使用Vue.js的Composition API来管理组件状态和逻辑。
<script lang="tsx" setup>
import { ref } from "vue";
import { onBeforeUnmount, shallowRef } from "vue";
const list = [
// ...
];
</script>
list
是一个响应式数据,用于存储卡片数据。editor
是一个shallowRef,用于管理富文本编辑器实例。handleEditorCreated
是一个回调函数,用于在富文本编辑器创建后执行操作。onBeforeUnmount
是一个钩子函数,用于在组件销毁前执行清理操作。在你的应用程序中使用组件:
<my-card-list :list="cardData" />
const list = ref([
{
id: 1,
name: "De President Mila",
image: "https://source.unsplash.com/random/300x200",
price: "$35/night",
rating: 4.8,
},
// ...
]);
list
是一个响应式数组,用于存储卡片数据。<van-grid-item v-for="item in list" :key="item.id">
<van-card
:thumb="item.image"
title="item.name"
:price="item.price"
:rating="item.rating"
class="card"
/>
</van-grid-item>
list
中的数据,并为每条数据渲染一个卡片。:key
属性确保在数据更新时Vue.js可以跟踪每个卡片的唯一性。.card {
height: 100%;
width: 100%;
border-radius: 10px;
box-shadow:
0 1px 6px rgba(0, 0, 0, 0.12),
0 1px 4px rgba(0, 0, 0, 0.24);
}
开发这个卡片列表组件的过程展示了Vue.js在创建响应式和可定制的UI组件方面的强大功能。通过结合响应式数据、循环渲染和自定义样式,你可以构建满足各种需求的复杂组件。
展望未来,该卡片列表组件可以进一步扩展和优化,例如: