当前位置:首页 > VUE

vue实现水果列表案例

2026-02-22 18:28:41VUE

Vue 实现水果列表案例

数据准备与组件结构

在 Vue 项目中创建一个水果列表的数据结构,通常使用数组存储水果信息,每个水果对象包含名称、价格、图片等属性。例如:

data() {
  return {
    fruits: [
      { id: 1, name: '苹果', price: 5, image: 'apple.jpg' },
      { id: 2, name: '香蕉', price: 3, image: 'banana.jpg' },
      { id: 3, name: '橙子', price: 4, image: 'orange.jpg' }
    ]
  }
}

列表渲染

使用 v-for 指令遍历水果数组,动态生成列表项。通过 :key 绑定唯一标识(如 id)优化渲染性能。

vue实现水果列表案例

<ul class="fruit-list">
  <li v-for="fruit in fruits" :key="fruit.id">
    <img :src="fruit.image" :alt="fruit.name">
    <span>{{ fruit.name }}</span>
    <span>¥{{ fruit.price }}</span>
  </li>
</ul>

样式设计

通过 CSS 美化列表布局,建议使用 Flexbox 或 Grid 实现响应式排列。例如:

.fruit-list {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
  gap: 20px;
}
.fruit-list li {
  border: 1px solid #eee;
  padding: 10px;
  text-align: center;
}

交互功能增强

添加点击事件或购物车功能,例如点击水果时触发方法:

vue实现水果列表案例

<li v-for="fruit in fruits" @click="addToCart(fruit)">
  <!-- 列表内容 -->
</li>
methods: {
  addToCart(fruit) {
    console.log(`已添加 ${fruit.name} 到购物车`);
  }
}

动态过滤与搜索

通过 v-model 绑定搜索输入框,使用计算属性实现实时过滤:

<input v-model="searchQuery" placeholder="搜索水果">
computed: {
  filteredFruits() {
    return this.fruits.filter(fruit => 
      fruit.name.includes(this.searchQuery)
    );
  }
}

完整组件示例

将以上逻辑整合为单文件组件(SFC):

<template>
  <div>
    <input v-model="searchQuery" placeholder="搜索水果">
    <ul class="fruit-list">
      <li 
        v-for="fruit in filteredFruits" 
        :key="fruit.id"
        @click="addToCart(fruit)"
      >
        <img :src="fruit.image" :alt="fruit.name">
        <span>{{ fruit.name }}</span>
        <span>¥{{ fruit.price }}</span>
      </li>
    </ul>
  </div>
</template>

<script>
export default {
  data() {
    return {
      searchQuery: '',
      fruits: [
        { id: 1, name: '苹果', price: 5, image: 'apple.jpg' },
        { id: 2, name: '香蕉', price: 3, image: 'banana.jpg' }
      ]
    }
  },
  computed: {
    filteredFruits() {
      return this.fruits.filter(fruit => 
        fruit.name.includes(this.searchQuery)
      );
    }
  },
  methods: {
    addToCart(fruit) {
      alert(`已添加 ${fruit.name}`);
    }
  }
}
</script>

<style scoped>
/* 样式代码 */
</style>

标签: 水果案例
分享给朋友:

相关文章

js日历案例实现

js日历案例实现

实现基础日历功能 日历功能可以通过JavaScript结合HTML和CSS实现,核心是动态生成日期表格。以下代码展示了一个基础的日历生成器: function generateCalendar(ye…

css制作案例

css制作案例

CSS 制作案例 响应式导航栏 使用 Flexbox 或 Grid 布局创建适应不同屏幕尺寸的导航栏。通过媒体查询调整菜单项的排列方式,在小屏幕设备上切换为汉堡菜单。 .navbar { dis…

vue实现评分案例

vue实现评分案例

实现评分功能的基本思路 在Vue中实现评分功能通常需要创建一个可交互的星级评分组件。用户可以通过点击或悬停选择评分等级。核心逻辑包括数据绑定、事件处理和样式控制。 创建评分组件 定义一个Vue组件,…

用vue实现routerview案例

用vue实现routerview案例

安装 Vue Router 确保项目已安装 Vue 和 Vue Router。若未安装,可通过以下命令安装: npm install vue-router 配置路由文件 创建路由配置文件(如 src…

vue实现组件切换案例

vue实现组件切换案例

Vue 实现组件切换案例 Vue 中实现组件切换通常可以通过动态组件 (<component :is="currentComponent">) 或路由 (vue-router) 完成。以下…

vue实现上传文件案例

vue实现上传文件案例

Vue 文件上传实现 使用 Vue 实现文件上传可以通过原生 HTML 的 <input type="file"> 或第三方库(如 axios、vue-dropzone)完成。以下是两种常…