【小程序】微信小程序自定义组件Component详细总结
创始人
2024-04-08 19:58:13
0

1- 前言


在本文中你将收获

  1. 小程序如何使用自定义组件
  2. 自定义组件之间的传值
  3. 自定义组件中插槽的使用

2- 组件文件新建

2.1 定义组件

在根目录新建components文件夹,建立cell 文件夹,右击创建cell的Component组件

  • cell.js
  • cell.wxml
  • cell.json
  • cell.wxss

2.2 注册组件

页面的xxx.json ,usingComponent注册

"usingComponents": {
"item":"/components/item/item"
}

2.3 使用组件


2.4 图参考

在这里插入图片描述
在这里插入图片描述

3- 外部类和样式隔离

3.1定义组件

  • cell.wxml 文件


  • cell.wxss
/* pages/com/com.wxss */
.cell{color: tomato;
}
.mycell{color: #f70;line-height: 120rpx !important;
}
  • cell.js 文件
  /* 选项 */options:{/* 样式隔离:apply-shared 父影响子shared 父子相互影响   isolated 相互隔离*/styleIsolation:'isolated',},//通过组件的外部类实现父组件控制自己的样式externalClasses:["cell-class"],

3.2 使用组件



在这里插入图片描述

3.3 图解释

在这里插入图片描述

4- 组件插槽

4.1 默认插槽

  • cell.wxml
 我是cell组件

  • cell.js
  /* 选项 */options:{//允许多个插槽multipleSlots:true,},
  • cell.wxss
.cell{height: 88rpx;line-height: 88rpx;border-bottom: 1rpx solid #cccccc;
}
使用cell组件
放假快点到来

在这里插入图片描述

4.2 命名多插槽

  • cell.wxml
 我是cell组件

  • cell.js
  /* 选项 */options:{//允许多个插槽multipleSlots:true,},
  • cell.wxss
.cell{height: 88rpx;line-height: 88rpx;border-bottom: 1rpx solid #cccccc;
}
  • com.wxml

🐱‍👓🐱‍🚀放假快点到来

🎉🐱‍做核酸今天要做

在这里插入图片描述

5- 组件传参

5.1 父传子

5.1.1 定义组件
  • cell.wxml
{{title}}{{num}}

  • cell.js
// components/cell/cell.js
Component({/* 选项 */options:{/* 样式隔离:apply-shared 父影响子shared 父子相互影响   isolated 相互隔离*/styleIsolation:'isolated',//允许多个插槽multipleSlots:true,},/*** 组件的属性列表*/properties: {title:{type:String,value:""},num:{type:Number,value:1}},/*** 组件的初始数据*/data: {//定义组件自己的数据countcount:1},/*** 组件的方法列表*/
})
5.1.2 使用组件
  • com.wxml
{5}}">
 
5.1.3 图解

在这里插入图片描述

5.2 子传参父

5.2.1 定义组件
  • cell.wxml
{{title}}{{count}}

  • cell.js
// components/cell/cell.js
Component({/* 选项 */options:{/* 样式隔离:apply-shared 父影响子shared 父子相互影响   isolated 相互隔离*/styleIsolation:'isolated',//允许多个插槽multipleSlots:true,},/*** 组件的属性列表*/properties: {title:{type:String,value:""},num:{type:Number,value:1}},/*** 组件的初始数据*/data: {//定义组件自己的数据countcount:1},lifetimes:{//在组件生命周期attached挂载更新countattached(){console.log(this.data);//count 的值为父组件传递的num值this.setData({count:this.data.num})}},/*** 组件的方法列表*/methods: {tapHd(){this.setData({count:this.data.count+5})//发送一个事件this.triggerEvent("cellclick",this.data.count)}}
})
5.2.2 使用组件
  • com.wxml
 {{title}}{{count}}
 
5.2.3 图解

在这里插入图片描述

6- 案例item组件

6.1 定义组件

  • 首先在根目录下创建一个专门放自定义组件的文件夹;
  • 然后在小程序编辑器里,右键,新建Component;

在这里插入图片描述


{url}}" open-type="{{openType}}" bindtap="itemclick">{icon}}">{icon}}" mode="aspectFill"/>{title}}">{{title}}{!showrslot}}">{{tip}}{badge}}">{badge===true}}" class="dot">  {{badge}} 

/* components/item/item.wxss */
.item{line-height: 88rpx;display: flex;align-items: center;justify-content: space-between;
}
.icon{margin-left: 30rpx;margin-right: 30rpx;height: 100%;display: flex;align-items: center;
}
.icon image{width: 60rpx;height: 60rpx;
}
.content{padding: 0 30rpx;border-bottom: 1rpx solid #ccc;display: flex;flex: 1;
}
.title{flex: 1;color: #333;font-size: 35rpx;
}
.right{display: flex;align-items: center;
}
.right .arrow{height: 25rpx;width: 25rpx;border-top: 3rpx solid #999;border-right: 3rpx solid #999;transform: rotate(45deg);
}
.tip{color: #999;font-size: 28rpx;
}
.dot{height: 15rpx;width: 15rpx;background-color: #f30;margin-left: 15rpx;border-radius: 50%;
}
.redbadge{font-size: 20rpx;padding: 5rpx;background-color: #f30;width: 30rpx;max-height: 30rpx;line-height: 30rpx;color: #fff;text-align: center;margin-left: 15rpx;border-radius: 20rpx;
}

6.2 使用组件

  • 引入组件:在页面的 json 文件中进行引用声明;

在这里插入图片描述


{"usingComponents": {"cell": "/components/cell/cell"}
}
  • 在页面的 wxml 中像使用基础组件一样使用自定义组件(名字和声明的保持一致)





{true}}" tip="10条消息未读">
{12}}" tip="12条消息未读">
{true}}">


插槽title


{true}}" itemclass="myitem">

.myitem{line-height: 120rpx !important;background-color: #f0f0f0;
}


往期传送门

【Vue】描述项目中两个功能模块的业务(一点见解)
【Git】Git基础操作一文详解,入门易懂(附图和案例
【Vue3】整理的一些Vue3知识点和案例(Vue3 获取窗口宽和高)

相关内容

热门资讯

阳泉市郊区靶向发力精准落实低保... “民生无小事,枝叶总关情。”群众的“急难愁盼”就是监督的发力点。山西省阳泉市郊区纪委监委、阳泉市郊区...
公开背刺?亨特·拜登批评其父移... 亨特·拜登,美国前总统乔·拜登之子,在一档新播出的访谈节目中,就其父亲宽松的移民政策以及从阿富汗撤军...
倍轻松因涉嫌违反证券法律法规等... 证券之星消息,12月26日倍轻松公开信息显示,深圳市倍轻松科技股份有限公司,董事长马学军因涉嫌违反证...
22岁小伙深夜在河边喝酒落水溺... 小伙高某晚上跟3个朋友在饭店喝酒,之后跟其中两人到大渡口边继续喝酒聊天期间不幸溺亡。事后,家属将共同...
中粮糖业(600737)披露修... 截至2025年12月25日收盘,中粮糖业(600737)报收于17.41元,较前一交易日上涨0.87...
政策、市场促进产能加速去化 生... 每经记者|闫峰峰 每经编辑|吴永久 2025年,我国生猪养殖行业在供需失衡、价格低迷和亏损扩大的困...
ST泉为股东因涉嫌违反证券法律... 证券之星消息,12月25日ST泉为公开信息显示,ST泉为股东泉为绿能投资(海南)有限公司,董事长褚一...
倍轻松被证监会立案调查 律师征... 雷达财经雷助吧出品 文|李茜 编|深海 12月25日晚间,倍轻松发布公告称,公司于2025年12月2...
文化新观察·年度文化亮点|全民... 历经多年酝酿,2025年12月,《全民阅读促进条例》公布,全民阅读事业从“政策引导”迈向“法治保障”...
瑞典北部发生暴力犯罪事件 多人... 新华社赫尔辛基12月25日电(记者朱昊晨)斯德哥尔摩消息:据瑞典媒体报道,25日圣诞节当天,瑞典北部...