vue外卖十七:商家详情-cartControl组件:购物车加减商品组件及功能

本文主要是介绍vue外卖十七:商家详情-cartControl组件:购物车加减商品组件及功能,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、基础页面

1.创建静态页面+接收props传值src/components/CartControl/cartControl.vue

<template>  <div class="cartcontrol"><div class="iconfont icon-remove_circle_outline"></div><div class="cart-count">1</div><div class="iconfont icon-add_circle"></div></div>
</template><script>export default{props:{food:Object}}
</script><style lang="stylus" rel="stylesheet/stylus">@import "../../common/stylus/mixins.styl".cartcontrolfont-size: 0.cart-decreasedisplay: inline-blockpadding: 6pxline-height: 24pxfont-size: 24pxcolor: rgb(0, 160, 220).icon-remove_circle_outlinedisplay: inline-blockpadding 6pxline-height 24pxfont-size 24pxcolor $green&.move-enter-active, &.move-leave-activetransition all .3s&.move-enter, &.move-leave-toopacity 0transform translateX(15px) rotate(180deg).cart-countdisplay: inline-blockvertical-align: topwidth: 12pxpadding-top: 6pxline-height: 24pxtext-align: centerfont-size: 10pxcolor: rgb(147, 153, 159).icon-add_circledisplay: inline-blockpadding: 6pxline-height: 24pxfont-size: 24pxcolor $green
</style>

2.使用购物车组件+传food到子组件

<div class="cartcontrol-wrapper">
<!--3】使用并传food到cartcontrol子组件
引号内,是当前页面的值;冒号后,是子组件接收的名--><CartControl :food='food' />
</div><script>略过...//【1】import CartControl from '../../../components/CartControl/CartControl'export default{略过...,components:{CartControl //【2】}}
</script>

效果:±按钮即是

在这里插入图片描述

二、实现加减按钮效果

1.pages/shop/goods/goods.vue加减按钮操作函数操作vuex,添加并改变food.count值实现购物车食物数量加减

<template>  <div class="cartcontrol"><!--1】点击并传值到计算属性,参数含义false:表示不是加(即减count);如果有food.count>0则显示减号 --><div class="iconfont icon-remove_circle_outline"  @click="updateCount(false)"></div><div class="cart-count">{{food.count}}</div><!--2】点击并传值到计算属性,参数含义:true表示加count --><div class="iconfont icon-add_circle" @click="updateCount(true)"></div></div>
</template>computed:{updateCount(isAdd){// 【3】触发action操作vuex,并向其传值this.$store.dispatch('updateFoodCount',{isAdd,food:this.food}) }}

2.创建mutation类型src/store/mutation-types.js

// 增加food中的count
export const INCREMENT_FOOD_COUNT = 'increment_food_count' 
// 减少food中的count
export const DECREMENT_FOOD_COUNT = 'decrement_food_count' 

3.actions.js

// 控制mutations
import {略过...,INCREMENT_FOOD_COUNT,//【1】加减购物产品数量DECREMENT_FOOD_COUNT,
} from './mutation-types.js'export default{
略过...,//【2】更新购物车食物数量updateFoodCount({commit},{isAdd,food}){if(isAdd){// 如果是true就是增加food.count数量commit(INCREMENT_FOOD_COUNT,{food})}else{// 否则就是减少commit(DECREMENT_FOOD_COUNT,{food})}}}

4.mutation.js

import {略过...
// 【1】以下3个购物车相关INCREMENT_FOOD_COUNT,DECREMENT_FOOD_COUNT,CLEAR_CART,RECEIVE_SEARCH_SHOPS
} from './mutation-types.js'
import Vue from 'vue' //【2】用于新增一个状态的属性,并能自动更新视图export default{略过...// 以下3个购物车相关// 【1】加购物车数量[INCREMENT_FOOD_COUNT](state,{food}){if(!food.count){//如果不存在数量属性则加一个// food.count=1//此操作虽能在food中加一个count属性,但视图无法更新/*Vue.set()参数:对象属性名属性值*/Vue.set(food,'count',1)// food.count++}else{//如果存在则直接加1food.count++}},// 【2】减购物车数量[DECREMENT_FOOD_COUNT](state,{food}){if(food.count){//如果购物车数量>0才进行减操作,防止数量为负food.count--}}}

5.效果:

  1. 点加会在状态中新增一个count属性,值为1,减号显示出来,继续点则数量增加
  1. 点减数量减少,到零则无法再点,且减号消失
    在这里插入图片描述

6.使用vue的动画给减号加旋转和隐藏效果

<!-- 动画旋转隐藏、显示 --><transition name="move"><!-- 点击并传值到计算属性,参数含义false:表示不是加(即减count);如果有food.count>0则显示减号 --><div class="iconfont icon-remove_circle_outline" v-show="food.count" @click="updateCount(false)"></div></transition>.icon-remove_circle_outlinedisplay: inline-blockpadding 6pxline-height 24pxfont-size 24pxcolor $green/*动画样式部分*/&.move-enter-active, &.move-leave-activetransition all .3s&.move-enter, &.move-leave-toopacity 0transform translateX(25px) rotate(180deg)

效果:

点加减0到1时减号会滚动渐显出来
1-0时,滚动渐隐消失

这篇关于vue外卖十七:商家详情-cartControl组件:购物车加减商品组件及功能的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/965190

相关文章

深度解析Spring Security 中的 SecurityFilterChain核心功能

《深度解析SpringSecurity中的SecurityFilterChain核心功能》SecurityFilterChain通过组件化配置、类型安全路径匹配、多链协同三大特性,重构了Spri... 目录Spring Security 中的SecurityFilterChain深度解析一、Security

Olingo分析和实践之OData框架核心组件初始化(关键步骤)

《Olingo分析和实践之OData框架核心组件初始化(关键步骤)》ODataSpringBootService通过初始化OData实例和服务元数据,构建框架核心能力与数据模型结构,实现序列化、URI... 目录概述第一步:OData实例创建1.1 OData.newInstance() 详细分析1.1.1

从入门到精通详解LangChain加载HTML内容的全攻略

《从入门到精通详解LangChain加载HTML内容的全攻略》这篇文章主要为大家详细介绍了如何用LangChain优雅地处理HTML内容,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录引言:当大语言模型遇见html一、HTML加载器为什么需要专门的HTML加载器核心加载器对比表二

Java实现预览与打印功能详解

《Java实现预览与打印功能详解》在Java中,打印功能主要依赖java.awt.print包,该包提供了与打印相关的一些关键类,比如PrinterJob和PageFormat,它们构成... 目录Java 打印系统概述打印预览与设置使用 PageFormat 和 PrinterJob 类设置页面格式与纸张

MySQL 8 中的一个强大功能 JSON_TABLE示例详解

《MySQL8中的一个强大功能JSON_TABLE示例详解》JSON_TABLE是MySQL8中引入的一个强大功能,它允许用户将JSON数据转换为关系表格式,从而可以更方便地在SQL查询中处理J... 目录基本语法示例示例查询解释应用场景不适用场景1. ‌jsON 数据结构过于复杂或动态变化‌2. ‌性能要

Qt使用QSqlDatabase连接MySQL实现增删改查功能

《Qt使用QSqlDatabase连接MySQL实现增删改查功能》这篇文章主要为大家详细介绍了Qt如何使用QSqlDatabase连接MySQL实现增删改查功能,文中的示例代码讲解详细,感兴趣的小伙伴... 目录一、创建数据表二、连接mysql数据库三、封装成一个完整的轻量级 ORM 风格类3.1 表结构

mysql表操作与查询功能详解

《mysql表操作与查询功能详解》本文系统讲解MySQL表操作与查询,涵盖创建、修改、复制表语法,基本查询结构及WHERE、GROUPBY等子句,本文结合实例代码给大家介绍的非常详细,感兴趣的朋友跟随... 目录01.表的操作1.1表操作概览1.2创建表1.3修改表1.4复制表02.基本查询操作2.1 SE

Golang如何用gorm实现分页的功能

《Golang如何用gorm实现分页的功能》:本文主要介绍Golang如何用gorm实现分页的功能方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录背景go库下载初始化数据【1】建表【2】插入数据【3】查看数据4、代码示例【1】gorm结构体定义【2】分页结构体

前端如何通过nginx访问本地端口

《前端如何通过nginx访问本地端口》:本文主要介绍前端如何通过nginx访问本地端口的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、nginx安装1、下载(1)下载地址(2)系统选择(3)版本选择2、安装部署(1)解压(2)配置文件修改(3)启动(4)

Java Web实现类似Excel表格锁定功能实战教程

《JavaWeb实现类似Excel表格锁定功能实战教程》本文将详细介绍通过创建特定div元素并利用CSS布局和JavaScript事件监听来实现类似Excel的锁定行和列效果的方法,感兴趣的朋友跟随... 目录1. 模拟Excel表格锁定功能2. 创建3个div元素实现表格锁定2.1 div元素布局设计2.