热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

小程序获取验证码按钮单独做成一个组件

首先,我们先认识一下自定义组件的一些基本知识,要知道它和page一样,都包含4个文件(wxml、wxss、js、json)。

  首先,我们先认识一下自定义组件的一些基本知识,要知道它和page一样,都包含4个文件(wxml、wxss、js、json)。

1、先在自定义组件的json文件里设置:

{"component": true
}

自定义组件的模板:

1 Component({
2 options: {
3 multipleSlots: true // 在组件定义时的选项中启用多slot支持
4 },
5 properties: {
6 // 传入组件的数据
7 innerText: {
8 type: String,
9 value: 'default value',
10 }
11 },
12 data: {
13 // 这里是一些组件内部数据
14 },
15 methods: {
16 // 这里是一个自定义方法
17 }
18 })

 

2、在要引用该组件的页面的json中配置:

{"usingComponents": {"component-tag-name": "path/to/the/custom/component"}
}

 在页面引用,标签名只能是小写字母、中划线和下划线的组合

<component-tag-name inner-text&#61;"Some text">component-tag-name>

那么接下来开始实践一下。因为平时的一些应用中&#xff0c;发送验证码&#xff0c;是比较常见的功能&#xff0c;所以我们可以把这个单独做成一个组件&#xff0c;以便之后的复用。

思路&#xff1a;单独把发送验证码作为一个组件&#xff0c;传入手机号&#xff0c;在组件内判断是否为合法的手机号&#xff0c;如果是&#xff0c;则调用接口获取验证码&#xff0c;按钮置灰&#xff0c;显示60s倒计时。超过60s即可重新获取验证码。代码如下&#xff1a;

1 const app &#61; getApp()
2 Component({
3 /**
4 * 组件的属性列表
5 */
6 properties: {
7 phone:{//请求的电话号码
8 type:Number,
9 value:&#39;&#39;
10 },
11 checkPhone:{//是否验证手机号是否存在&#xff08;适合忘记密码时使用&#xff09;
12 type:Boolean,
13 value:&#39;&#39;
14 }
15 },
16
17 /**
18 * 组件的初始数据
19 */
20 data: {
21 codemsg:&#39;&#39;,
22 btntxt: &#39;获取验证码&#39;,
23 time:60,
24 InterValObj:&#39;&#39;, //计时器
25 isSend:false
26 },
27
28 /**
29 * 组件的方法列表
30 */
31 methods: {
32 SetRemainTime: function () {
33 let time &#61; this.data.time
34 if (this.data.time &#61;&#61; 0) {
35 clearInterval(this.data.InterValObj); //停止计时器
36 this.setData({
37 isSend:false,
38 time:60,
39 btntxt:&#39;重新发送验证码&#39;
40 })
41 }
42 else {
43 time--
44 this.setData({
45 time:time,
46 isSend:true,
47 btntxt:time&#43;&#39;s&#39;
48 })
49 }
50 },
51 getCode(){
52 let reg &#61; /^1[345678]\d{9}$/;
53 let phone &#61; this.properties.phone
54 if (!(reg.test(phone))) {
55 this.triggerEvent(&#39;transCode&#39;, { error: true})
56 return false;
57 }
58 if (this.properties.checkPhone){
59 //接口请求是我自己又封装的小程序request API&#xff0c;没什么技术难度&#xff0c;就不献上了
60 app.ajax(&#39;get&#39;, &#39;api/validate/check_mobile_exist&#39;, { mobile: this.data.phone }, (res) &#61;> {
61 if (res.data.code &#61;&#61; &#39;0&#39;) {
62 this.triggerEvent(&#39;transCode&#39;, { hasPhone: true })
63 return false
64 }
65 this.sendCode()
66 }, (error) &#61;> {
67 })
68
69 }
70 if (!this.properties.checkPhone){
71 this.sendCode()
72 }
73 },
74 sendCode(){
75 let phone &#61; this.properties.phone
76 app.ajax(&#39;get&#39;, &#39;api/user/sendmsg&#39;, { phone: phone }, (res) &#61;> {
77 if (res.data.code &#61;&#61; &#39;0&#39;) {
78 return wx.showToast({
79 title: &#39;你操作过于频繁&#xff0c;请稍后再试&#39;,
80 icon:&#39;none&#39;,
81 duration:2000
82 })
83 }
84 let code &#61; res.data.data.msg
85 this.triggerEvent(&#39;transCode&#39;, { code: code })
86 this.setData({
87 InterValObj: setInterval(() &#61;> { this.SetRemainTime() }, 1000)
88 })
89 }, (error) &#61;> {
90
91 })
92 }
93 }
94 })

 假设在注册页面引入&#xff0c;或者忘记密码页面使用&#xff1a;

1、在引入页面的json文件里&#xff1a;

{"usingComponents": {"get-code": "../getCode/getCode" }
}

2、页面引入

 

转:https://www.cnblogs.com/sansgun/p/9325156.html



推荐阅读
  • 本文详细解析了JSONP(JSON with Padding)的跨域机制及其工作原理。JSONP是一种通过动态创建``标签来实现跨域请求的技术,其核心在于利用了浏览器对``标签的宽松同源策略。文章不仅介绍了JSONP的产生背景,还深入探讨了其具体实现过程,包括如何构造请求、服务器端如何响应以及客户端如何处理返回的数据。此外,还分析了JSONP的优势和局限性,帮助读者全面理解这一技术在现代Web开发中的应用。 ... [详细]
  • 使用cpphttplib构建HTTP服务器以处理带有查询参数的URL请求 ... [详细]
  • Spring Boot 实战(一):基础的CRUD操作详解
    在《Spring Boot 实战(一)》中,详细介绍了基础的CRUD操作,涵盖创建、读取、更新和删除等核心功能,适合初学者快速掌握Spring Boot框架的应用开发技巧。 ... [详细]
  • 本文探讨了在Android应用中实现动态滚动文本显示控件的优化方法。通过详细分析焦点管理机制,特别是通过设置返回值为`true`来确保焦点不会被其他控件抢占,从而提升滚动文本的流畅性和用户体验。具体实现中,对`MarqueeText.java`进行了代码层面的优化,增强了控件的稳定性和兼容性。 ... [详细]
  • Prim算法在处理稠密图时表现出色,尤其适用于边数远多于顶点数的情形。传统实现的时间复杂度为 \(O(n^2)\),但通过引入优先队列进行优化,可以在点数为 \(m\)、边数为 \(n\) 的情况下显著降低时间复杂度,提高算法效率。这种优化方法不仅能够加速最小生成树的构建过程,还能在大规模数据集上保持良好的性能表现。 ... [详细]
  • 从零起步:使用IntelliJ IDEA搭建Spring Boot应用的详细指南
    从零起步:使用IntelliJ IDEA搭建Spring Boot应用的详细指南 ... [详细]
  • 本文探讨了如何在 Google Sheets 中通过自定义函数实现 AJAX 调用。具体介绍了编写脚本的方法,以便在电子表格中发起 AJAX 请求,从而实现数据的动态获取与更新。这种方法不仅简化了数据处理流程,还提高了工作效率。 ... [详细]
  • 作为140字符的开创者,Twitter看似简单却异常复杂。其简洁之处在于仅用140个字符就能实现信息的高效传播,甚至在多次全球性事件中超越传统媒体的速度。然而,为了支持2亿用户的高效使用,其背后的技术架构和系统设计则极为复杂,涉及高并发处理、数据存储和实时传输等多个技术挑战。 ... [详细]
  • Spring框架入门指南:专为新手打造的详细学习笔记
    Spring框架是Java Web开发中广泛应用的轻量级应用框架,以其卓越的功能和出色的性能赢得了广大开发者的青睐。本文为初学者提供了详尽的学习指南,涵盖基础概念、核心组件及实际应用案例,帮助新手快速掌握Spring框架的核心技术与实践技巧。 ... [详细]
  • 在稀疏直接法视觉里程计中,通过优化特征点并采用基于光度误差最小化的灰度图像线性插值技术,提高了定位精度。该方法通过对空间点的非齐次和齐次表示进行处理,利用RGB-D传感器获取的3D坐标信息,在两帧图像之间实现精确匹配,有效减少了光度误差,提升了系统的鲁棒性和稳定性。 ... [详细]
  • 本文详细探讨了C语言中`extern`关键字的简易编译方法,并深入解析了预编译、`static`和`extern`的综合应用。通过具体的代码示例,介绍了如何在不同的文件之间共享变量和函数声明,以及这些关键字在编译过程中的作用和影响。文章还讨论了预编译过程中宏定义的使用,为开发者提供了实用的编程技巧和最佳实践。 ... [详细]
  • C#编程指南:实现列表与WPF数据网格的高效绑定方法 ... [详细]
  • 深入解析Gradle中的Project核心组件
    在Gradle构建系统中,`Project` 是一个核心组件,扮演着至关重要的角色。通过使用 `./gradlew projects` 命令,可以清晰地列出当前项目结构中包含的所有子项目,这有助于开发者更好地理解和管理复杂的多模块项目。此外,`Project` 对象还提供了丰富的配置选项和生命周期管理功能,使得构建过程更加灵活高效。 ... [详细]
  • 如何在Java中高效构建WebService
    本文介绍了如何利用XFire框架在Java中高效构建WebService。XFire是一个轻量级、高性能的Java SOAP框架,能够简化WebService的开发流程。通过结合MyEclipse集成开发环境,开发者可以更便捷地进行项目配置和代码编写,从而提高开发效率。此外,文章还详细探讨了XFire的关键特性和最佳实践,为读者提供了实用的参考。 ... [详细]
  • 本文深入探讨了在使用 Spring Cloud Feign 时遇到的 `java.lang.IllegalStateException` 异常,具体表现为方法体参数过多的问题。通过详细分析异常原因和代码结构,提出了有效的解决方案,帮助开发者更好地理解和处理这一常见问题。 ... [详细]
author-avatar
XC一米_623
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有