当前位置:首页 > VUE

vue实现简单商品列表

2026-01-22 20:41:21VUE

实现商品列表的基本结构

在Vue中实现商品列表,需要创建一个组件来展示商品数据。通常使用v-for指令循环渲染商品列表。

<template>
  <div class="product-list">
    <div v-for="product in products" :key="product.id" class="product-item">
      <img :src="product.image" :alt="product.name">
      <h3>{{ product.name }}</h3>
      <p>{{ product.price }}</p>
    </div>
  </div>
</template>

定义商品数据

商品数据可以定义在组件的data选项中,或者从API获取。以下是一个静态数据示例:

<script>
export default {
  data() {
    return {
      products: [
        { id: 1, name: '商品1', price: '¥100', image: 'image1.jpg' },
        { id: 2, name: '商品2', price: '¥200', image: 'image2.jpg' },
        { id: 3, name: '商品3', price: '¥300', image: 'image3.jpg' }
      ]
    }
  }
}
</script>

添加样式

为商品列表和商品项添加基本样式,确保布局美观。

<style>
.product-list {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
  gap: 20px;
  padding: 20px;
}

.product-item {
  border: 1px solid #ddd;
  padding: 10px;
  text-align: center;
}

.product-item img {
  max-width: 100%;
  height: auto;
}
</style>

动态加载商品数据

如果需要从API加载商品数据,可以使用axiosfetchcreatedmounted钩子中获取数据。

<script>
import axios from 'axios';

export default {
  data() {
    return {
      products: []
    }
  },
  mounted() {
    axios.get('https://api.example.com/products')
      .then(response => {
        this.products = response.data;
      })
      .catch(error => {
        console.error('加载商品数据失败:', error);
      });
  }
}
</script>

添加商品交互功能

可以为商品列表添加点击事件或购物车功能,增强用户交互。

<template>
  <div class="product-list">
    <div 
      v-for="product in products" 
      :key="product.id" 
      class="product-item"
      @click="addToCart(product)"
    >
      <img :src="product.image" :alt="product.name">
      <h3>{{ product.name }}</h3>
      <p>{{ product.price }}</p>
      <button>加入购物车</button>
    </div>
  </div>
</template>
<script>
export default {
  methods: {
    addToCart(product) {
      this.$emit('add-to-cart', product);
    }
  }
}
</script>

使用Vuex管理状态

如果项目复杂,可以使用Vuex管理商品和购物车状态。

import Vuex from 'vuex';

const store = new Vuex.Store({
  state: {
    products: [],
    cart: []
  },
  mutations: {
    setProducts(state, products) {
      state.products = products;
    },
    addToCart(state, product) {
      state.cart.push(product);
    }
  },
  actions: {
    fetchProducts({ commit }) {
      axios.get('https://api.example.com/products')
        .then(response => {
          commit('setProducts', response.data);
        });
    }
  }
});

商品列表分页

对于大量商品数据,可以实现分页功能。

vue实现简单商品列表

<template>
  <div>
    <div class="product-list">
      <!-- 商品列表 -->
    </div>
    <div class="pagination">
      <button 
        v-for="page in totalPages" 
        :key="page"
        @click="goToPage(page)"
      >
        {{ page }}
      </button>
    </div>
  </div>
</template>
<script>
export default {
  data() {
    return {
      currentPage: 1,
      itemsPerPage: 10,
      totalItems: 100
    }
  },
  computed: {
    totalPages() {
      return Math.ceil(this.totalItems / this.itemsPerPage);
    }
  },
  methods: {
    goToPage(page) {
      this.currentPage = page;
      this.fetchProducts();
    },
    fetchProducts() {
      const start = (this.currentPage - 1) * this.itemsPerPage;
      const end = start + this.itemsPerPage;
      axios.get(`https://api.example.com/products?_start=${start}&_end=${end}`)
        .then(response => {
          this.products = response.data;
        });
    }
  }
}
</script>

分享给朋友:

相关文章

js实现列表

js实现列表

使用 JavaScript 实现列表 JavaScript 提供了多种方式来实现列表功能,包括数组操作、DOM 元素动态生成等。以下是几种常见的实现方法: 使用数组存储列表数据 数组是 JavaSc…

vue实现列表组件

vue实现列表组件

Vue 列表组件实现方法 基础列表渲染 使用 v-for 指令渲染数组数据,需配合 :key 提升性能: <template> <ul> <li v-for…

vue实现图片列表

vue实现图片列表

实现图片列表的基本方法 在Vue中实现图片列表可以通过v-for指令遍历图片数据数组,结合<img>标签动态绑定src属性。以下是基本实现步骤: <template> &…

vue实现列表轮播

vue实现列表轮播

实现列表轮播的基本思路 使用Vue实现列表轮播的核心在于动态更新列表数据,结合CSS动画或过渡效果实现平滑切换。通常有两种实现方式:基于CSS动画的无限循环轮播和基于Vue数据绑定的动态更新轮播。…

vue虚拟滚动列表实现

vue虚拟滚动列表实现

虚拟滚动列表的实现原理 虚拟滚动(Virtual Scrolling)通过仅渲染可视区域内的元素来优化长列表性能。核心思想是根据滚动位置动态计算可见项,减少DOM节点数量。 基于vue-virtua…

vue实现列表的过滤

vue实现列表的过滤

实现列表过滤的方法 在Vue中实现列表过滤通常可以通过计算属性、方法或第三方库如lodash来完成。以下是几种常见的实现方式: 使用计算属性过滤列表 计算属性是Vue中处理数据过滤的理想选择,因为…