微信小程序之自定义组件的实现代码(附源码)


Posted in Javascript onAugust 02, 2018

最近在项目开发中,遇到好多雷同的页面样式,就想着可以将常用的功能模块封装成组件,方便在项目中使用和修改,下面就参照微信小程序的文档分步骤写一个微信小程序的组件。

附上效果图:

微信小程序之自定义组件的实现代码(附源码)

step1:创建文件并申明

与创建微信小程序的页面一样,一个自定义组件也需要json,wxml,wxss,js四个文件。

在项目根目录中创建文件夹,取名为:component,在该目录下继续创建文件夹successModal。

可以在开发工具中右键创建,选择component,默认自动会创建四个文件。如图:

微信小程序之自定义组件的实现代码(附源码)

在successModal.json文件中进行自定义组件声明,如:

在开发工具中右键新建选择component,默认自动会创建。

{
 "component": true,
 "usingComponents": {}
}

step2:编写组件模板代码

<!-- 这是自定义组件的内部WXML结构 success.wxml-->
<view class='modal-section' wx:if="{{modalHidden}}">
 <view class='modal-opaci' bindtap='modal_click_Hidden'></view>
 <view class='modal-cont'>
 <icon type='{{modalIcon}}' size='70'></icon>
 <text class='modal-titleTxt {{modalIcon}}'>{{modalTitle}}</text>
 <text class='success-msg'>{{modalDesc}}</text>
 </view>
</view>

step3:编写样式文件

/* 这里的样式只应用于这个自定义组件 */
/*successModal.wxss*/
.modal-opaci {
 position: absolute;
 left: 0;
 top: 0;
 z-index: 100;
 height: 100%;
 width: 100%;
 background: black;
 opacity: 0.4;
 filter: alpha(opacity=40);
}
.modal-cont {
 position: fixed;
 top: 30%;
 left: 8.5%;
 z-index: 999;
 border-radius: 20rpx;
 padding: 40rpx 150rpx;
 background-color: #fff;
 text-align: center;
}
.modal-cont text {
 line-height: 90rpx;
 display: block;
}
.success {
 color: #09bb07;
}
.modal-titleTxt {
 font-size: 50rpx;
 font-weight: 700;
}
.warn {
 color: #f76260;
}

step4:编写业务逻辑

在自定义组件的 js 文件中,需要使用 Component() 来注册组件,组件的属性值和内部数据将被用于组件 wxml 的渲染,其中,属性值是可由组件外部传入的。

//successModal.js
Component({
 /**
 * 组件的属性列表
 */
 properties: {
 //这里定义了modalHidden属性,属性值可以在组件使用时指定.写法为modal-hidden 
 modalHidden: {
  type: Boolean,
  value: true
 },
 modalIcon: {
  type: String,
  value: ' ',
 },
 modalTitle: {
  type: String,
  value: ' ',
 },
 modalDesc: {
  type: String,
  value: ' ',
 }
 },

 /**
 * 组件的初始数据
 */
 data: {

 },

 /**
 * 组件的方法列表
 */
 methods: {
 // 这里是自定义方法
 modal_click_Hidden: function () {
  this.setData({
  modalHidden: false,
  })
 },
 }
})

step5:使用自定义组件

首先在需要使用的json文件中进行引用申明,然后需要提供每个自定义组件的标签名和对应的自定义组件文件路径。

//index.json
{
 "usingComponents": {
 "modal-success": "../../component/successModal/successModal" //在这里写上页面中自定义的标签名和自定义组件的文件路径
 },
 "navigationBarTitleText": "首页"
}

其次,在页面的wxml中使用自定义组件:在页面的 wxml 中就可以像使用基础组件一样使用自定义组件。节点名即自定义组件的标签名,节点属性即传递给组件的属性值。

<!--index.wxml-->
<view class="container">
 <view class="demoBtn" bindtap="bindViewTap">
 <text>点击</text>
 </view>
 <!-- 调用modal组件 -->
 <modal-success modal-hidden="{{is_modal_Hidden}}" modal-icon="{{is_modal_icon}}" modal-title="{{is_modal_title}}" modal-desc="{{is_modal_desc}}" />
</view>

以上就是小程序自定义组件的demo,欢迎start。

github地址:https://github.com/ywyan/wx-component

注意点:

  • 对于基础库的1.5.x版本, 1.5.7 也有部分自定义组件支持。
  • 因为WXML节点标签名只能是小写字母、中划线和下划线的组合,所以自定义组件的标签名也只能包含这些字符。
  • 自定义组件也是可以引用自定义组件的,引用方法类似于页面引用自定义组件的方式(使用 usingComponents 字段)。
  • 自定义组件和使用自定义组件的页面所在项目根目录名不能以“wx-”为前缀,否则会报错。
  • 旧版本的基础库不支持自定义组件,此时,引用自定义组件的节点会变为默认的空节点。

总结

以上所述是小编给大家介绍的微信小程序之自定义组件的实现代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
许愿墙中用到的函数
Oct 07 Javascript
JavaScript使用技巧精萃[代码非常实用]
Nov 21 Javascript
JQueryEasyUI datagrid框架的基本使用
Apr 08 Javascript
jQuery 获取URL的GET参数值的小例子
Apr 18 Javascript
jQuery拖拽插件gridster使用指南
Apr 21 Javascript
为什么JavaScript没有块级作用域
May 22 Javascript
第一次接触神奇的Bootstrap
Oct 14 Javascript
javascript 显示全局变量与隐式全局变量的区别
Feb 09 Javascript
基于JS实现仿京东搜索栏随滑动透明度渐变效果
Jul 10 Javascript
anime.js 实现带有描边动画效果的复选框(推荐)
Dec 24 Javascript
微信小程序发布新版本时自动提示用户更新的方法
Jun 07 Javascript
JS实现简单tab选项卡切换
Oct 25 Javascript
Array数组对象中的forEach、map、filter及reduce详析
Aug 02 #Javascript
利用Blob进行文件上传的完整步骤
Aug 02 #Javascript
vue.js图片转Base64上传图片并预览的实现方法
Aug 02 #Javascript
vue组件横向树实现代码
Aug 02 #Javascript
利用Node.js批量抓取高清妹子图片实例教程
Aug 02 #Javascript
在微信小程序里使用watch和computed的方法
Aug 02 #Javascript
在小程序中使用Echart图表的示例代码
Aug 02 #Javascript
You might like
如何从一个php文件向另一个地址post数据,不用表单和隐藏的变量的
2007/03/06 PHP
php中socket的用法详解
2014/10/24 PHP
用 Composer构建自己的 PHP 框架之设计 MVC
2014/10/30 PHP
PHP使用PHPExcel实现批量上传到数据库的方法
2017/06/08 PHP
用正则xmlHttp实现的偷(转)
2007/01/22 Javascript
js脚本获取webform服务器控件的方法
2014/05/16 Javascript
jQuery统计上传文件大小的方法
2015/01/24 Javascript
再谈JavaScript线程
2015/07/10 Javascript
基于javascript实现按圆形排列DIV元素(三)
2016/12/02 Javascript
利用vue和element-ui设置表格内容分页的实例
2018/03/02 Javascript
vue实现element-ui对话框可拖拽功能
2018/08/17 Javascript
JS拖动选择table里的单元格完整实例【基于jQuery】
2019/05/28 jQuery
node.js使用net模块创建服务器和客户端示例【基于TCP协议】
2020/02/14 Javascript
Angular5整合富文本编辑器TinyMCE的方法(汉化+上传)
2020/05/26 Javascript
js 获取扫码枪输入数据的方法
2020/06/10 Javascript
Python中处理字符串之isalpha()方法的使用
2015/05/18 Python
Python列表和元组的定义与使用操作示例
2017/07/26 Python
Python中字典的浅拷贝与深拷贝用法实例分析
2018/01/02 Python
Python通过Pygame绘制移动的矩形实例代码
2018/01/03 Python
python实现将读入的多维list转为一维list的方法
2018/06/28 Python
Windows下将Python文件打包成.EXE可执行文件的方法
2018/08/03 Python
Python3 串口接收与发送16进制数据包的实例
2019/06/12 Python
浅谈Python2之汉字编码为unicode的问题(即类似\xc3\xa4)
2019/08/12 Python
对tensorflow 中tile函数的使用详解
2020/02/07 Python
python统计字符串中字母出现次数代码实例
2020/03/02 Python
python简单的三元一次方程求解实例
2020/04/02 Python
DHC中国官方购物网站:日本通信销售No.1化妆品
2016/08/20 全球购物
Foot Locker澳洲官网:美国运动服和鞋类零售商
2019/10/11 全球购物
武夷山导游词
2015/02/03 职场文书
人事行政助理岗位职责
2015/04/11 职场文书
2016七夕情人节感言
2015/12/09 职场文书
《月光曲》教学反思
2016/02/16 职场文书
Python基础知识学习之类的继承
2021/05/31 Python
Python selenium的这三种等待方式一定要会!
2021/06/10 Python
SpringBoot集成Redis的思路详解
2021/10/16 Redis
mysql查询结果实现多列拼接查询
2022/04/03 MySQL