原本我想隔个几天再发文章,刚好今天项目上线,环境有问题,导致只有干等,刚好要为公司打造一套属于公司自己的一系列功能组件,这个使命就交给我了,大家也一直叫我来点干货,说实话我只是一个湿货,肚子里干一点就给你们出点货,那从今天开始不看岛国片系列教程视频,不但自撸,还教你撸…………你懂的!!最强vue组件https://juejin.im/post/58de6807da2f60005fc1a9bb

写之前我只想说如果看到错别字,就别给我点出来了,宝宝受不了鸟了,有些同学还给我特意打出来,心里还是很欣慰的,就像小编说有错别字说是我用心去写的,能看出错别字说明你用心去看的。无论怎么样送上一句谢谢你们!!
为了感谢你们送你们一本人自创IT搞笑文章,互联网六大门派决战光明顶

接下来还是按着我们约定的来
关于组件篇我就直接拿demo再进行细化分析给大家讲一些细节的知识点,我相信会更有意思一点,为什么我要把基础给大家讲的那么详细呢,因为基础打的好组件才写的好
1.本文分享 计算属性

2.代码运行vue-cli 2.1版本

3.组件代码都在components文件夹里

4.主代码逻辑都在 App.vue文件夹里

我什么都不要我只要

使用v-on 绑定自定义事件

讲到这里我先给大家讲四个东西,一个是vm.on,vm.on,vm.emit,vm.once,vm.once,vm.off
这四个东西如何用,到底是什么鬼东西,看官文档不是吹牛B对新手来说很难看的懂
1.emit是触发事件第一个参数是事件名,后面可以带任意参数2.emit 是触发事件 第一个参数是事件名,后面可以带任意参数 2.on 是监听事件 第一个参数是监听事件名,第二个是一个回调,可接收emit传来的任意参数
3.once也是监听事件,跟once 也是监听事件,跟on不同的是只是监听一次只后不再监听,第二个是一个回调,可接收emit传来的任意参数
4.$off 是取消监听 只有一个参数,是取消监听的参数名

直接上demo一目了然

<template><div><button @click='demo'>到五的时候取消监听</button><p>{{ziksang1}}</p><button @click='demo2'>只监听一次,传一个参过来</button><p>{{ziksang2}}</p></div>
</template>
<script>export default {created () {this.$on('demo',()=>{this.ziksang1++if(this.ziksang1 == 5){this.$off('demo')}})this.$once('demo2',(value)=>{this.ziksang2+=value})},data () {return {ziksang1 : 0,ziksang2 : 0}},methods : {demo () {this.$emit('demo')},demo2 () {this.$emit('demo2',10)}}}
</script>

我在点击两个按钮的时候,同时发出了监听事件,一个是demo1,一个是demo2
但是我在第一个按钮上进行了on监听,持续监听,但是当数值+到5的时候,我就取消监听,三个方法已经用到,但是没有带参数的demo那就来看看第二个按钮,第二个按钮也是进行了监听,但是用on监听,持续监听,但是当数值+到5的时候,我就取消监听,三个方法已经用到,但是没有带参数的demo 那就来看看第二个按钮,第二个按钮也是进行了监听,但是用Once来进行监听,但是有一点你会发我在事件上demo2触发事件的时候带了一个参数过来,让$once去接这个参数,就能很明显示展示了参数如何用

就问你们讲的好不好,我相信此处应该有掌声,api中就是给了一个简单的述语,对新手很难理解

在1.0版本中我们发现一点,我们父子组件进行双向数据绑定是用:async 来进行的,可是这个会影响组件与组之间的混乱问题,不小心篡改组件的数据,那怎么办2.0尤哥用了v-on来让父组件来监听子组件触发的事件来进行数据传递
请看下面这张图

从这张图中很不难发现一点,父组件传递数据给子组件用的是props,那子组件要改变父组件的状态则用emit events来进行触发

那如果是组件形式的我们就不能用$on了,只能在组件上使用v-on:’监听的事件’=’监听到事件后做的事件函数’

组件 myDemo.vue

<template><button @click='a'>按钮</button>
</template>
<script>export default {data () {return {time2 : ''}},props : ['time'],watch : {time (value) {this.time2 = value}},methods :{a () {this.time2 ++this.$emit('a',this.time2)}}}
</script>

App.vue

<template><div><myDemo :time = 'time' @a='a'></myDemo><p>{{time}}</p></div>
</template>
<script>
import myDemo from './components/myDemo.vue'export default {components: {myDemo },data () {return {time : 0}},methods : {a (value) {this.time = value}}}
</script>

我们在组件myDemo中当点击按钮的时候会把父组件传过的time参数再返回给父组件显示,每次加一
这里要讲几个知识点
在组件中,我觉得最操蛋的一件事不能直接操作props里的数据,那怎么办,有一个办法,创建一个副本,我们只有watch prors里的time参数,当父组件把数据传递过来的时候,props里的time数据此时就被watch捕捉,然后再赋值给time2,此时我们就可以操作数据time2,然后每个点击按钮+1,再然后通过$emit触发事件,再把time2当作参数传递给父组件
在父组件里我们就可以v-on监听触发的事件,然后再执行方法,在事件回调中拿到子组件传过来的参数进行数据赋值 ,更新视图,虽然有点复杂,好好理解一下就可以了,这种情况我们以后会用到vux就能解决这种复杂的问题,但是既然对于封装组件来说只有这么办

好了知识点就讲这么多,我们开始打开ziksang岛国视频,请老司机们握好方向盘,不要乱踩油门,开始我们的倒计时组件

应用场景
不用想倒计时组件肯定每个完整的项目里都会用到,跟你们讲讲我,我感觉我做的公众号就是一个钓鱼公众号,到处都是注册,可以这么说,你不注册什么都看不了玩不了,有些注册花样还不同,但是始终有一点,永远离不开短信倒计时,费话不多说,如果我手上有一把屠龙刀绝对帮那产品割包皮,来吧我上代码

组件 ZiksangCountDown.vue

<template><div><button>{{time | change}}<tton></div>
</template><script>
let flag = falseexport default {data () {return {time : '获取验证码',}},props : {start : {type : Boolean}},watch : {start (value,oldvalue) {if(value == true){this.countDown()}}},methods: {countDown () {this.time = 60;let time = setInterval(()=>{this.time --if(this.time == 0){this.$emit('countDown')this.time = '获取验证码'flag = trueclearInterval(time)}},100)}},filters : {change (value) {if(!value) return ""if(!isNaN(value)){if(flag == true){return `重新发送${value}S`}return value+'S'}else{return value}}}}
</script>

App.vue

<template><div><ziksang-count-down :start='start' @countDown ='start=false' @click.native='sendCode'></ziksang-count-down></div>
</template>
<script>
import ZiksangCountDown from './components/ZiksangCountDown.vue'export default {components: {ZiksangCountDown },data () {return {start : false}},methods : {sendCode (value) {//前面发送ajax请求成功之后调用this.start = true开始短信倒计时this.start = true}}}
</script>

我们先从组件开始分析,现在的我已经很困了,又是2点,TMD运维不知道干什么吃的还没上好,但是可能就是天注定,如果在发布之前结束,你们明早一睁眼就能看的到我的文章
先分析 template模板里,很简单,我用change来过滤,在基础篇里我也将过,这种场景比什么computed,watch,模板语法再适合不过了,因为filter里不允许使用实列上的任何东西,所以我只能在最外层进行定义一个flag变量为false,这个作用就判断是否是重从发送,当发送过一次再点击之后,改为true,我们对时间进行不同的过滤,第一次发送直接返回时间+s,第二次发送或更多发送之后返回重新发送时间+s,如果倒计时结束则不是一个数字,则返回获取验证码,
二。如果对倒时间有一个监控点,我用的是父组件传来一个start,此时再结上面那个v-on知识点,我在watch对父组件传来的start进行监听,如果变为true,我就要马上调 用countDown 这个方法来进行倒计时操作。
三。在用countDown这个方法里,我在时间变成0的时候,我对外进行一个事件触发,让父组件去监听,让父组件的start再变false,说明倒计时已经结束,如果再发送则再改变start的值向子组件进行传递,就这么来回来回,重复执行。一个短信倒计时组件就这么大告成功了,其实在本质上还可以再加一些:class的判断如果时间在倒计时的时候给颜色变灰,这个就当是一个小作业,给同学们练练手。

原本想给大家分享日历组件的,但是我想来想去,基础打的好,后面学的才不难,我的创作一开始目的就行清楚,从浅入深。虽然我的图片是从深入浅,什么从深入浅的TM扯淡,只是一种装B的说法。说归说归但是B还是要装起来的

Vue2.0进阶组件篇1 教你秒撸(短信倒计时组件)相关推荐

  1. Vue2.0进阶组件 短信倒计时组件

    原本我想隔个几天再发文章,刚好今天项目上线,环境有问题,导致只有干等,刚好要为公司打造一套属于公司自己的一系列功能组件,这个使命就交给我了,大家也一直叫我来点干货,说实话我只是一个湿货,肚子里干一点就 ...

  2. 【vue2.0进阶篇】用transition组件轻松实现过渡效果

    Vue系列连载又继续了,公众号和微信号都接到了伙伴们的催更,最近忙于工作,没来得及时更新<Vue2.0进阶>的教程文章,大家久等了. 这一节我们来学习如何利用Vue提供的transitio ...

  3. 【vue2.0进阶】vue-router10分钟快速入门

    又一周过去了,时间过得很快,更新不能落下,继续我们的vue2.0进阶教程.今天前端君来跟大家一起快速入门vue-router. 学一个新东西之前,我们一定先要学会问:它有什么作用,为什么要学它? 对于 ...

  4. php easysms,Laravel 短信发送组件 - easy-sms

    安装 easy-sms easy-sms 是安正超写的一个短信发送组件,利用这个组件,我们可以快速的实现短信发送功能. $ composer require "overtrue/easy-s ...

  5. Android快速入门 四大应用组件之一Activity(打电话和发短信)功能练习

    3)在回调方法当中实现逻辑 */ public class MainActivity extends Activity implements OnClickListener { private Edi ...

  6. 教你如何用短信追女孩

    原贴:http://www.imysql.cn/node/17 教你如何用短信追女孩 周二, 2006/02/21 - 20:39 - Leo 第一课: 当然,首先要知道女孩子的手机号码. 其次,要对 ...

  7. 【vue2.0进阶】用axios来实现数据请求,简单易用

    写了几期的黑话<互联网公司黑话大全>,有个同学问vue2.0的进阶篇算更新完了吗? 让我猛地想起进阶篇在推出预告的时候,大家都提醒前端君,vue-resource已经停止更新了,现在都推荐 ...

  8. 【vue2.0进阶】案例:用Vuex实现一个简单的计算器

    昨天我们学习了Veux的几个重要的核心概念.当然只讲概念还不够,必须要结合上案例才能理解得更深刻. 马上就开始我们今天的案例:用Vuex实现一个简单的网页计算器. 我们之前的章节说过,Vuex适合在较 ...

  9. 【vue2.0进阶】轻松理解Vuex的3个核心概念

    上一节前端君和大家一起认识了Vuex,我们了解了Vuex是一个提供状态管理机制,相比使用传统的全局对象,它有两大优点,一个是它的状态存储是响应式的,另一个是要不能随意修改Vuex的状态,必须按照它的规 ...

最新文章

  1. 南方人过年 VS 北方人过年
  2. 车牌识别--Towards End-to-End License Plate Detection and Recognition: A Large Dataset and Baseline
  3. WGAN-GP与GAN及WGAN的比较
  4. java 简化判断_简化Java内存分析
  5. 太阳能灯_【产品中心】太阳能野营灯
  6. 洛谷—— P2733 家的范围 Home on the Range
  7. 团“模子”政策模式乱舞
  8. 2. 测度论-分布与分布函数
  9. pip缓存下载的包文件
  10. MATLAB读取Execl数据并绘制曲线图
  11. wordpress简约淘客主题风格附详细实例教程源码
  12. 西游记中唐僧念过几次紧箍咒?
  13. js清除cookies
  14. Alios things资料篇
  15. 【skywalking 部署测试】
  16. Linux下常用的工具软件
  17. 学生HTML个人网页作业作品下载 个人主页博客网页设计制作 大学生个人网站作业模板 dreamweaver简单个人网页制作
  18. 项目中使用过的Soc
  19. 刚从培训机构出来的Java程序员且无工作经历该如何找工作?
  20. 一键清除Centos iptables 所有规则

热门文章

  1. 魔兽争霸war3心得体会(一):UD的冰甲蜘蛛流
  2. 主要的七种排序(快排、希尔排序、堆排序、归并排序、选择排序、插入排序、冒泡排序)
  3. matlab剖面图_海洋要素如温盐等
  4. PTA——哥尼斯堡的“七桥问题(出现运行超时?不妨进来看看)
  5. 家家都有机器人不是梦 网络机器人时代到来
  6. ####linux下搭建NIS服务器
  7. wifi模块:ESP8266-ESP-01的使用
  8. android 自定义蜘蛛网状图形
  9. Python 3.11 终于发布了,性能大提升!
  10. 多核危机:Scala vs Erlang