当前位置:首页 > 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)优化渲染性能。

<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;
}

交互功能增强

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

<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>

vue实现水果列表案例

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

相关文章

vue实现评分案例

vue实现评分案例

实现评分组件的基本结构 在Vue中创建一个评分组件,可以使用v-for循环生成星星图标,并通过v-model或自定义事件实现双向绑定。以下是一个基于Font Awesome图标的实现示例: <…

vue实现router案例

vue实现router案例

Vue Router 基础实现案例 安装 Vue Router 依赖包 npm install vue-router 创建路由配置文件(通常为 src/router/index.js) imp…

vue实现天气小案例

vue实现天气小案例

实现天气小案例的步骤 创建Vue项目 使用Vue CLI创建一个新项目,确保安装了Vue和必要的依赖项。可以通过以下命令创建项目: vue create weather-app cd weathe…

vue实现页面各种案例

vue实现页面各种案例

Vue 实现页面常见案例 动态表单生成 使用 v-for 和 v-model 动态渲染表单字段,适合问卷或配置类场景。通过数据驱动表单结构,字段类型可扩展为输入框、下拉框等。 <templat…

html css网页制作案例

html css网页制作案例

HTML CSS网页制作案例 响应式个人主页 使用HTML5和CSS3创建一个响应式个人主页,包含导航栏、简介、作品集和联系信息。通过媒体查询实现不同屏幕尺寸的适配。 <!DOCTYPE h…

css案例制作

css案例制作

CSS案例制作指南 响应式导航栏 通过Flexbox或Grid布局实现自适应导航栏,兼容移动端与桌面端。关键代码: .navbar { display: flex; justify-cont…