浅谈uniapp项目购物车业务逻辑

购物车逻辑可以说是一个电商项目的重中之重,也是本人较为薄弱的一环。本次疫情,闲置在家,便做了一个小demo,也算是进一步锻炼一下购物车逻辑。下面便跟大家简单分享一下本次的经验,大佬勿喷。疫情当前,逆战不怠,武汉加油,中国加油。

购物车效果图:
在这里插入图片描述
一、在用户加入商品至购物车时,首先得判断,当前是否处于登录状态?
如果未登录,则不能添加,并跳转至登录界面;如果已登录,则根据添加商品的信息发送请求,将商品添加至购物车列表数据
在这里插入图片描述
二、添加商品成功后,转至购物车页面时,在onshow生命周期函数中判断是否登录,如果未登录则跳转至登录界面,如果已登录,则将购物车列表数据请求下来,以便渲染页面。如果没有数据,则显示购物车空空,如果有数据则渲染页面。

  • 4
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是uniapp项目实战购物界面的步骤和代码示例: 1. 在store.js文件中定义购物的状态和相关操作方法: ```javascript const store = new Vuex.Store({ state: { ShoppingCart: [] // 购物商品列表 }, mutations: { // 添加商品到购物 addToCart(state, product) { let item = state.ShoppingCart.find(item => item.id === product.id) if (item) { item.quantity++ item.total = item.quantity * item.price } else { state.ShoppingCart.push({ ...product, quantity: 1, total: product.price }) } }, // 从购物中删除商品 removeFromCart(state, product) { let index = state.ShoppingCart.findIndex(item => item.id === product.id) if (index !== -1) { state.ShoppingCart.splice(index, 1) } }, // 清空购物 clearCart(state) { state.ShoppingCart = [] } }, getters: { // 计算购物产品的总数量 total(state) { let arr = state.ShoppingCart var sum = 0 arr.map(item => { sum += item.quantity }) return sum }, // 计算购物的总价 price(state) { let arr = state.ShoppingCart var a = 0 arr.map(item => { a += item.total }) return a } } }) ``` 2. 在商品列表页面中添加“加入购物”按钮,并在点击事件中调用addToCart方法: ```html <template> <div> <ul> <li v-for="product in products" :key="product.id"> <span>{{ product.name }}</span> <span>{{ product.price }}</span> <button @click="addToCart(product)">加入购物</button> </li> </ul> </div> </template> <script> import { mapMutations } from 'vuex' export default { data() { return { products: [ { id: 1, name: '商品1', price: 10 }, { id: 2, name: '商品2', price: 20 }, { id: 3, name: '商品3', price: 30 } ] } }, methods: { ...mapMutations(['addToCart']), } } </script> ``` 3. 在购物页面中展示购物商品列表,并在每个商品后面添加“删除”按钮,并在点击事件中调用removeFromCart方法: ```html <template> <div> <ul> <li v-for="product in ShoppingCart" :key="product.id"> <span>{{ product.name }}</span> <span>{{ product.price }}</span> <span>{{ product.quantity }}</span> <span>{{ product.total }}</span> <button @click="removeFromCart(product)">删除</button> </li> </ul> <div>总数量:{{ total }}</div> <div>总价:{{ price }}</div> </div> </template> <script> import { mapState, mapMutations, mapGetters } from 'vuex' export default { computed: { ...mapState(['ShoppingCart']), ...mapGetters(['total', 'price']) }, methods: { ...mapMutations(['removeFromCart']) } } </script> ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值