当前位置:首页 > VUE

vue实现商品管理

2026-02-24 18:20:29VUE

Vue 实现商品管理的基本方法

环境准备
安装 Vue CLI 创建项目:

npm install -g @vue/cli
vue create product-management
cd product-management

项目结构
推荐按功能模块划分目录:

src/
├── components/
│   ├── ProductList.vue
│   ├── ProductForm.vue
├── views/
│   ├── ProductManagement.vue
├── store/ (Vuex)
│   ├── modules/
│   │   └── products.js

核心功能实现

商品列表展示
使用 v-for 渲染商品数据,配合分页组件:

<template>
  <div v-for="product in products" :key="product.id">
    <h3>{{ product.name }}</h3>
    <p>价格: {{ product.price }}</p>
  </div>
  <paginator :total-items="total" @page-changed="loadProducts"/>
</template>

<script>
export default {
  data() {
    return {
      products: [],
      total: 0
    }
  },
  methods: {
    async loadProducts(page = 1) {
      const res = await axios.get(`/api/products?page=${page}`)
      this.products = res.data.items
      this.total = res.data.total
    }
  }
}
</script>

商品表单组件
实现新增/编辑的双向绑定:

vue实现商品管理

<template>
  <form @submit.prevent="handleSubmit">
    <input v-model="form.name" placeholder="商品名称">
    <input type="number" v-model="form.price">
    <button type="submit">提交</button>
  </form>
</template>

<script>
export default {
  props: ['initialData'],
  data() {
    return {
      form: this.initialData || { name: '', price: 0 }
    }
  },
  methods: {
    handleSubmit() {
      this.$emit('submit', this.form)
    }
  }
}
</script>

状态管理方案

Vuex 模块化存储
创建商品专用的 store 模块:

// store/modules/products.js
const state = {
  allProducts: []
}

const mutations = {
  SET_PRODUCTS(state, products) {
    state.allProducts = products
  }
}

const actions = {
  async fetchProducts({ commit }) {
    const res = await axios.get('/api/products')
    commit('SET_PRODUCTS', res.data)
  }
}

export default {
  namespaced: true,
  state,
  mutations,
  actions
}

组合式 API 写法
使用 Vue 3 的 Composition API:

vue实现商品管理

import { ref, onMounted } from 'vue'
import { useStore } from 'vuex'

export default {
  setup() {
    const store = useStore()
    const searchQuery = ref('')

    onMounted(() => {
      store.dispatch('products/fetchProducts')
    })

    const filteredProducts = computed(() => {
      return store.state.products.allProducts.filter(
        p => p.name.includes(searchQuery.value)
      )
    })

    return { searchQuery, filteredProducts }
  }
}

高级功能扩展

图片上传处理
使用 FileReader 实现本地预览:

methods: {
  handleImageUpload(e) {
    const file = e.target.files[0]
    const reader = new FileReader()
    reader.onload = (event) => {
      this.form.imageUrl = event.target.result
    }
    reader.readAsDataURL(file)
  }
}

数据验证
使用 Vuelidate 进行表单校验:

import { required, minValue } from '@vuelidate/validators'

export default {
  validations() {
    return {
      form: {
        name: { required },
        price: { minValue: minValue(0) }
      }
    }
  }
}

性能优化
对商品列表进行虚拟滚动:

<template>
  <RecycleScroller
    :items="products"
    :item-size="100"
    key-field="id"
  >
    <template v-slot="{ item }">
      <product-item :data="item"/>
    </template>
  </RecycleScroller>
</template>

标签: 商品vue
分享给朋友:

相关文章

vue 实现挂载

vue 实现挂载

Vue 实现挂载的基本方法 在 Vue 中,挂载是将 Vue 实例与 DOM 元素关联的过程。通过挂载,Vue 可以管理 DOM 并实现数据绑定和响应式更新。 创建 Vue 实例并挂载 const…

vue实现素材

vue实现素材

Vue 实现素材的方法 使用 Vue 组件管理素材 在 Vue 项目中,可以通过组件化的方式管理素材。创建一个专门的组件来加载和显示素材,例如图片、视频或音频文件。组件可以接收素材的路径或 URL 作…

vue 实现href

vue 实现href

Vue 实现 href 的方法 在 Vue 中实现 href 功能可以通过多种方式,具体取决于需求场景。以下是几种常见的方法: 使用 <a> 标签 直接使用 HTML 的 <a&g…

vue实现答辩

vue实现答辩

Vue 实现答辩系统的关键步骤 项目初始化与配置 使用 Vue CLI 或 Vite 创建项目,安装 Vue Router 管理路由,Pinia/Vuex 进行状态管理。配置 ESLint 和 Pre…

vue 简单实现

vue 简单实现

以下是 Vue 的简单实现示例,涵盖基础模板、数据绑定、方法及生命周期: 基础模板与数据绑定 <div id="app"> <p>{{ message }}</p&…

vue实现uuid

vue实现uuid

使用 uuid 库生成 UUID 在 Vue 项目中,可以使用 uuid 库来生成 UUID。安装依赖: npm install uuid 在 Vue 组件中使用: import { v4 as…