随着技术的发展,开发的复杂度也越来越高,传统开发方式将一个系统做成了整块应用,经常出现的情况就是一个小小的改动或者一个小功能的增加可能会引起整体逻辑的修改,造成牵一发而动全身。通过组件化开发,可以有效实现单独开发,单独维护,而且他们之间可以随意的进行组合。大大提升开发效率低,降低维护成本。 组件化对于任何一个业务场景复杂的前端应用以及经过多次迭代之后的产品来说都是必经之路。组件化要做的不仅仅是表面上看到的模块拆分解耦,其背后还有很多工作来支撑组件化的进行,例如结合业务特性的模块拆分策略、模块间的交互方式和构建系统等等 。 前端的组件化,其实是对项目进行自上而下的拆分,把通用的、可复用的功能以黑盒的形式封装到一个组间中,然后暴露一些开箱即用的函数和属性配置供外部组件调用,实现与业务逻辑的解耦,来达到代码间的高内聚、低耦合,实现功能模块的可配置、可复用、可扩展。

今天给大家介绍的一款组件是仿京东拼多多领取优惠券弹出框popup组件, 可用于电商商品详情领券场景使用,下载完整代码请访问uni-app插件市场地址:https://ext.dcloud.net.cn/plugin?id=13405

效果图如下:

cc-defineCoupon

使用方法


<!-- 选择优惠券弹出层 --> <view class="mask" catchtouchmove="preventTouchMove" v-if="couponshow == true" @tap="hidecoupon"></view> <view class="coupon" :style="'bottom:' + (couponshow == true ? '0px':'')"> <scroll-view class="scrolls" scroll-y> <!-- colors:按钮颜色 couponList:优惠卷列表数据  @onReceive:领取或立即使用按钮事件 --> <cc-defineCoupon colors="#fa436a" :couponList="couponList" @onReceive="onReceive"></cc-defineCoupon> </scroll-view> </view>           // 打开优惠券弹框 opencoupon() { this.couponshow = true }, // 关闭优惠券弹框 hidecoupon() { this.couponshow = false }, //领取优惠券 立即使用事件 onReceive(item, index) { console.log(item, index) if (item.status == 1) { // 立即使用 事件 } else { this.couponList[index].status = 1 //领取成功 uni.showToast({ title: '领取成功', icon: 'none' }) } },

HTML代码实现部分


<template> <view class="content"> <button style="margin-top: 38px;" @click="opencoupon()">弹出优惠券</button> <!-- 选择优惠券弹出层 --> <view class="mask" catchtouchmove="preventTouchMove" v-if="couponshow == true" @tap="hidecoupon"></view> <view class="coupon" :style="'bottom:' + (couponshow == true ? '0px':'')"> <scroll-view class="scrolls" scroll-y> <!-- colors:按钮颜色 couponList:优惠卷列表数据  @onReceive:领取或立即使用按钮事件 --> <cc-defineCoupon colors="#fa436a" :couponList="couponList" @onReceive="onReceive"></cc-defineCoupon> </scroll-view> </view> </view> </template> <script> export default { components: { }, data() { return { couponshow: false, couponList: [ //优惠券列表 { money: 100, reduce: 10, date: '2023-05-09 2023-10-02', id: 1, status: 0, condition: ['新人专享', '通用卷'] }, { money: 100, reduce: 20, date: '2023-02-09 2023-10-02', id: 2, status: 0, condition: ['会员专享', '通用卷'] }, { money: 100, reduce: 30, date: '2023-02-09 2023-10-02', id: 3, status: 0, condition: ['数码产品可用', '不可与其他产品共享'] }, { money: 100, reduce: 40, date: '2023-02-09 2023-10-02', id: 4, status: 0, condition: ['新人专享', '可与其他产品共享'] }, { money: 100, reduce: 50, date: '2023-02-09 2023-10-02', id: 5, status: 0, condition: ['新人专享', '仅在支付时使用'] } ], } }, methods: { // 打开优惠券弹框 opencoupon() { this.couponshow = true }, // 关闭优惠券弹框 hidecoupon() { this.couponshow = false }, //领取优惠券 立即使用事件 onReceive(item, index) { console.log(item, index) if (item.status == 1) { // 立即使用 事件 } else { this.couponList[index].status = 1 //领取成功 uni.showToast({ title: '领取成功', icon: 'none' }) } }, } } </script> <style lang="scss" scoped> .content { display: flex; flex-direction: column; } .mask { width: 100%; height: 100vh; position: fixed; top: 0; left: 0; background: #000; z-index: 900; opacity: 0.7; } /* 优惠券 */ .coupon { background-color: #fff; border-radius: 10upx 10upx 0 0; position: fixed; left: 0; bottom: -1000upx; z-index: 999; transition: all 0.3s; } .scrolls { width: 100vw; height: 60vh; padding-top: 10upx; z-index: 500; } </style>

前端Vue组件之仿京东拼多多领取优惠券弹出框popup 可用于电商商品详情领券场景使用的更多相关文章

  1. JS组件系列——Bootstrap寒冬暖身篇:弹出框和提示框效果以及代码展示

    前言:对于Web开发人员,弹出框和提示框的使用肯定不会陌生,比如常见的表格新增和编辑功能,一般常见的主要有两种处理方式:行内编辑和弹出框编辑.在增加用户体验方面,弹出框和提示框起着重要的作用,如果你的 ...

  2. 仿腾讯微博的一个弹出框 v0.1 beta

    仿腾讯微博的一个弹出框 v0.1 beta   代码写的不太好,新手请大家海涵,只为博君一笑,勿放在心上. 写在这里留作纪念,也许以后用的到. 效果 CSS .prompt{ position: ab ...

  3. vue中点击屏幕其他区域关闭自定义div弹出框

    直接上代码: mounted: function () { let that = this; $(document).on('click', function (e) { let dom = $('. ...

  4. JS组件Bootstrap实现弹出框和提示框效果代码

    这篇文章主要介绍了JS组件Bootstrap实现弹出框和提示框效果代码,对弹出框和提示框感兴趣的小伙伴们可以参考一下 前言:对于Web开发人员,弹出框和提示框的使用肯定不会陌生,比如常见的表格新增和编 ...

  5. 尝试用React写几个通用组件 - 带搜索功能的下拉列表,开关切换按钮,弹出框

    尝试用React写几个通用组件 - 带搜索功能的下拉列表,开关切换按钮,弹出框 近期正在逐步摸索学习React的用法,尝试着写几个通用型的组件,整体项目还是根据webpack+react+css-me ...

  6. 关于隐式创建vue实例实现简化弹出框组件显示步骤

    我们在使用vue写alert组件的时候,经常是定义了一个alert.vue,然后引入alert.vue,然后配置参数等等,非常繁琐,那有没有一种方式可以像window.alert("内容&q ...

  7. 基于Vue.js PC桌面端弹出框组件|vue自定义弹层组件|vue模态框

    vue.js构建的轻量级PC网页端交互式弹层组件VLayer. 前段时间有分享过一个vue移动端弹窗组件,今天给大家分享一个最近开发的vue pc端弹出层组件. VLayer 一款集Alert.Dia ...

  8. [ vue ] Quasar封装q-dialog组件,在外层实现弹出框的开启和关闭

    场景描述: 见:https://www.cnblogs.com/remly/p/12981582.html 具体实现: <!-- 父组件 --> <template> < ...

  9. Vue父组件如何调用子组件(弹出框)中的方法的问题

    如果子组件是一个弹出框,只有在触发某个点击事件时弹出框才能出现(也就是说在父组件中的子组件使用上用了v-if),那在父组件上如果不点击弹出框是不能获取到$ref的. 原因就是:引用指向的是子组件创建的 ...

  10. vue--vant组件库Dialog弹出框

    安装vant UI框架: cnpm install vant –-save-dev 导入组件-在main.js里: import Vant from 'vant'; import'vant/lib/v ...

随机推荐

  1. 关键字——static

    static 关键字具有共享属性,放在方法区中

  2. react18中antd的Upload组件上传头像,并且拿到服务器返回的头像的url地址在页面中显示头像

    业务需求:上传头像,上传完毕后拿到头像的url,把头像展示在页面中,最终把头像url和其他用户信息一起发送给服务器 上传头像流程 导入 Upload 组件和图标(一个加号,一个加载中) import ...

  3. vue将页面(dom元素)转换成图片,并保存到本地

    1 npm install html2canvas --save <template> <div class="QRCode-box"> <img i ...

  4. 【解决办法】配置banner信息时卡死/无反应,以及正确配置

    环境: 工具:锐捷EVE模拟器 远程工具:SecureCRT 系统版本:Windows 10 问题描述 描述:在配置登录 banner 提示警告信息时,将 "^" 符号放到了警告信 ...

  5. 从案例中详解go-errgroup-源码

    一.背景 某次会议上发表了error group包,一个g失败,其他的g会同时失败的错误言论(看了一下源码中的一句话The first call to return a non-nil error c ...

  6. GPT4free安装部署教程 - 白嫖GPT

    前言 为啥之前一直没有更新GPT相关的内容,因为个人觉得如果每次都需要使用付费使用API的话,那这个工具还是很难在个人手上被运用起来,多测试几次关键字和清洗数据,API的费用对个人来说都太高昂了 直到 ...

  7. springcloud~Sentinel

    介绍 随着微服务的流行,服务和服务之间的稳定性变得越来越重要.Sentinel 是面向分布式.多语言异构化服务架构的流量治理组件,主要以流量为切入点,从流量路由.流量控制.流量整形.熔断降级.系统自适 ...

  8. Extjs4 Tree Grid 综合示例(展开、编辑列、获取数据)

    用json数据模拟后端传回来的结果,Extjs tree支持两种类型的结构,一种是带children属性的嵌套式的数据,一种是扁平的,每条记录带pid的数据,带pid的添加配置项可以自动解析成树形结构 ...

  9. vue移动端适配方案

    一.安装postcss-px-to-viewport插件 1.使用npm安装 $ npm install postcss-px-to-viewport --save-dev 2.或者使用yarn安装 ...

  10. 2023-03-22:给定一个字符串str, 如果删掉连续一段子串,剩下的字符串拼接起来是回文串, 那么该删除叫做有效的删除。 返回有多少种有效删除。 注意 : 不能全删除,删成空串不允许, 字符串长

    2023-03-22:给定一个字符串str, 如果删掉连续一段子串,剩下的字符串拼接起来是回文串, 那么该删除叫做有效的删除. 返回有多少种有效删除. 注意 : 不能全删除,删成空串不允许, 字符串长 ...