uni-app 京东的购物车插件需求

发布于 1周前 作者 h691938207 来自 Uni-App

uni-app 京东的购物车插件需求

1 回复

针对uni-app实现京东购物车插件的需求,以下是一个简化的代码案例,展示如何使用Vue.js和uni-app框架创建一个基本的购物车功能。这个示例包括商品列表、添加到购物车、购物车展示以及计算总价等核心功能。

1. 项目结构

假设项目结构如下:

- pages
  - index
    - index.vue (商品列表页面)
  - cart
    - cart.vue (购物车页面)
- store
  - index.js (Vuex状态管理)
- main.js (入口文件)

2. Vuex 状态管理 (store/index.js)

import Vue from 'vue';
import Vuex from 'vuex';

Vue.use(Vuex);

export default new Vuex.Store({
  state: {
    cart: []
  },
  mutations: {
    ADD_TO_CART(state, product) {
      const item = state.cart.find(item => item.id === product.id);
      if (item) {
        item.quantity += 1;
      } else {
        state.cart.push({ ...product, quantity: 1 });
      }
    }
  },
  getters: {
    cartItems: state => state.cart,
    cartTotal: state => state.cart.reduce((total, item) => total + item.price * item.quantity, 0)
  }
});

3. 商品列表页面 (pages/index/index.vue)

<template>
  <view>
    <block v-for="product in products" :key="product.id">
      <view>
        {{ product.name }} - {{ product.price }}
        <button @click="addToCart(product)">加入购物车</button>
      </view>
    </block>
    <navigator url="/pages/cart/cart">前往购物车</navigator>
  </view>
</template>

<script>
export default {
  data() {
    return {
      products: [
        { id: 1, name: '商品A', price: 100 },
        { id: 2, name: '商品B', price: 200 }
      ]
    };
  },
  methods: {
    addToCart(product) {
      this.$store.commit('ADD_TO_CART', product);
    }
  }
};
</script>

4. 购物车页面 (pages/cart/cart.vue)

<template>
  <view>
    <block v-for="item in cartItems" :key="item.id">
      <view>
        {{ item.name }} - {{ item.price }} x {{ item.quantity }}
      </view>
    </block>
    <view>总价: {{ cartTotal }}</view>
  </view>
</template>

<script>
import { mapGetters } from 'vuex';

export default {
  computed: {
    ...mapGetters(['cartItems', 'cartTotal'])
  }
};
</script>

5. 入口文件 (main.js)

确保在main.js中引入Vuex并挂载到Vue实例上。

import Vue from 'vue';
import App from './App';
import store from './store';

Vue.config.productionTip = false;

App.mpType = 'app';

const app = new Vue({
    store,
    ...App
});
app.$mount();

这个示例展示了如何使用Vuex管理购物车状态,并在不同页面间共享数据。根据实际需求,你可以进一步扩展和优化这个基础代码。

回到顶部