当前位置:首页 > VUE

vue实现商品列表代码

2026-02-20 18:03:22VUE

Vue 实现商品列表代码

基础结构

创建 Vue 项目后,在 src/App.vue 或组件文件中实现商品列表功能。需要定义商品数据、渲染列表模板及样式。

<template>
  <div class="product-list">
    <h2>商品列表</h2>
    <ul>
      <li v-for="product in products" :key="product.id">
        {{ product.name }} - ¥{{ product.price }}
      </li>
    </ul>
  </div>
</template>

<script>
export default {
  data() {
    return {
      products: [
        { id: 1, name: "商品A", price: 100 },
        { id: 2, name: "商品B", price: 200 },
        { id: 3, name: "商品C", price: 300 }
      ]
    };
  }
};
</script>

<style scoped>
.product-list {
  font-family: Arial, sans-serif;
}
ul {
  list-style: none;
  padding: 0;
}
li {
  padding: 8px;
  border-bottom: 1px solid #eee;
}
</style>

动态加载数据

通过 axiosfetch 从后端 API 获取商品数据。

vue实现商品列表代码

<script>
import axios from 'axios';

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

添加交互功能

实现商品点击事件或购物车功能。

<template>
  <div class="product-list">
    <h2>商品列表</h2>
    <ul>
      <li 
        v-for="product in products" 
        :key="product.id"
        @click="addToCart(product)"
      >
        {{ product.name }} - ¥{{ product.price }}
      </li>
    </ul>
  </div>
</template>

<script>
export default {
  methods: {
    addToCart(product) {
      this.$emit('add-to-cart', product);
    }
  }
};
</script>

使用 Vuex 管理状态

若项目复杂,可通过 Vuex 集中管理商品和购物车状态。

vue实现商品列表代码

// store.js
import Vue from 'vue';
import Vuex from 'vuex';

Vue.use(Vuex);

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

组件中调用 Vuex

在组件中通过 mapStatemapActions 使用 Vuex。

<script>
import { mapState, mapActions } from 'vuex';

export default {
  computed: {
    ...mapState(['products'])
  },
  methods: {
    ...mapActions(['fetchProducts']),
    addToCart(product) {
      this.$store.commit('ADD_TO_CART', product);
    }
  },
  mounted() {
    this.fetchProducts();
  }
};
</script>

分页与筛选

添加分页和筛选功能提升用户体验。

<template>
  <div>
    <input v-model="searchQuery" placeholder="搜索商品" />
    <ul>
      <li v-for="product in filteredProducts" :key="product.id">
        {{ product.name }}
      </li>
    </ul>
    <button @click="prevPage">上一页</button>
    <span>当前页: {{ currentPage }}</span>
    <button @click="nextPage">下一页</button>
  </div>
</template>

<script>
export default {
  data() {
    return {
      searchQuery: '',
      currentPage: 1,
      itemsPerPage: 10
    };
  },
  computed: {
    filteredProducts() {
      return this.products.filter(product => 
        product.name.includes(this.searchQuery)
      ).slice(
        (this.currentPage - 1) * this.itemsPerPage,
        this.currentPage * this.itemsPerPage
      );
    }
  },
  methods: {
    nextPage() {
      this.currentPage++;
    },
    prevPage() {
      if (this.currentPage > 1) this.currentPage--;
    }
  }
};
</script>

关键点总结

  • 数据绑定:使用 v-for 渲染列表,:key 确保性能优化。
  • API 集成:通过 axiosfetch 动态加载数据。
  • 状态管理:复杂场景下使用 Vuex 管理全局状态。
  • 交互扩展:结合事件和计算属性实现搜索、分页等功能。

根据实际需求选择适合的方案,灵活调整代码结构。

标签: 代码商品
分享给朋友:

相关文章

vue实现商品切换

vue实现商品切换

实现商品切换功能 在Vue中实现商品切换功能通常涉及数据绑定、事件处理和动态渲染。以下是几种常见方法: 数据驱动切换 创建商品数据数组和当前索引,通过修改索引实现切换: data() { re…

vue实现商品规格

vue实现商品规格

商品规格的数据结构设计 商品规格通常采用树形结构,包含规格组(如颜色、尺寸)和规格项(如红色、XL)。数据结构可设计为: specs: [ { name: '颜色', items…

vue实现动画代码

vue实现动画代码

Vue 动画实现方法 Vue 提供了多种方式实现动画效果,包括内置过渡组件、CSS 动画库集成以及第三方动画库结合。以下是几种常见实现方法: 使用 Vue 内置过渡组件 Vue 的 <tran…

vue实现商品卡片

vue实现商品卡片

Vue 实现商品卡片 在 Vue 中实现商品卡片可以通过组件化的方式完成,以下是一个完整的实现方案: 商品卡片组件 <template> <div class="product…

vue实现商品显示

vue实现商品显示

Vue 实现商品显示的基本方法 使用 Vue.js 实现商品显示功能可以通过多种方式完成,包括静态数据展示、动态数据绑定、组件化开发等。以下是几种常见的实现方法: 数据绑定与列表渲染 在 Vue 中…

vue实现动态修改代码

vue实现动态修改代码

Vue 动态修改代码的实现方法 Vue 提供了多种方式实现动态修改代码的需求,以下是几种常见场景和解决方案: 动态组件加载 使用 Vue 的 <component> 标签配合 is 属性…