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


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 相关文章推荐
JS setCapture 区域外事件捕捉
Mar 18 Javascript
使用jQuery插件创建常规模态窗口登陆效果
Aug 23 Javascript
如何让DIV可编辑、可拖动示例代码
Sep 18 Javascript
JS点击链接后慢慢展开隐藏着图片的方法
Feb 17 Javascript
详解JavaScript对象和数组
Dec 03 Javascript
简单实现node.js图片上传
Dec 18 Javascript
js实现按座位号抽奖
Apr 05 Javascript
react native基于FlatList下拉刷新上拉加载实现代码示例
Sep 30 Javascript
jQuery实现经典的网页3D轮播图封装功能【附源码下载】
Feb 15 jQuery
微信小程序时间标签和时间范围的联动效果
Feb 15 Javascript
vue使用prop可以渲染但是打印台报错的解决方式
Nov 13 Javascript
微信小程序自定义底部弹出框动画
Nov 18 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
写一个用户在线显示的程序
2006/10/09 PHP
ThinkPHP采用原生query实现关联查询left join实例
2014/12/02 PHP
你应该知道PHP浮点数知识
2015/05/13 PHP
PHP网络操作函数汇总
2015/05/18 PHP
CI(CodeIgniter)模型用法实例分析
2016/01/20 PHP
Linux平台PHP5.4设置FPM线程数量的方法
2016/11/09 PHP
php实现获取近几日、月时间示例
2019/07/06 PHP
DHTML 中的绝对定位
2006/11/26 Javascript
IE bug table元素的innerHTML
2010/01/11 Javascript
ajax 缓存 问题 requestheader
2010/08/01 Javascript
JavaScript中的数值范围介绍
2014/12/29 Javascript
js实现跟随鼠标移动且带关闭功能的图片广告实例
2015/02/26 Javascript
JavaScript中Null与Undefined的区别解析
2015/06/30 Javascript
JS中创建函数的三种方式及区别
2016/03/13 Javascript
Jquery on方法绑定事件后执行多次的解决方法
2016/06/02 Javascript
jQuery弹出下拉列表插件(实现kindeditor的@功能)
2016/08/16 Javascript
Bootstrap框架安装使用详解
2017/01/21 Javascript
jQuery实现可兼容IE6的遮罩功能详解
2017/09/19 jQuery
Javascript实现异步编程的过程
2018/06/18 Javascript
利用H5api实现时钟的绘制(javascript)
2020/09/13 Javascript
Python语言的面相对象编程方式初步学习
2016/03/12 Python
Python实现约瑟夫环问题的方法
2016/05/03 Python
python3中获取文件当前绝对路径的两种方法
2018/04/26 Python
python实现图片彩色转化为素描
2019/01/15 Python
Python实现截取PDF文件中的几页代码实例
2019/03/11 Python
matplotlib实现显示伪彩色图像及色度条
2019/12/07 Python
python dict乱码如何解决
2020/06/07 Python
Python读取pdf表格写入excel的方法
2021/01/22 Python
h5实现获取用户地理定位的实例代码
2017/07/17 HTML / CSS
英国简约舒适女装品牌:Great Plains
2018/07/27 全球购物
计算s=f(f(-1.4))的值
2014/05/06 面试题
上课迟到检讨书
2014/02/19 职场文书
售后服务承诺书模板
2014/05/21 职场文书
启迪人心的励志语录:脾气永远不要大于本事
2020/01/02 职场文书
Python字典的基础操作
2021/11/01 Python
python数据可视化使用pyfinance分析证券收益示例详解
2021/11/20 Python