跳到主要内容

小程序组件源码

小程序组件源码,和 微信官方小程序自定义组件 的实现一致。

源码示例

配置

src/mp/components/button/index.json
{
"component": true
}

js 实现

src/mp/components/button/index.js
Component({
options: {
multipleSlots: true,
},
properties: {
style: {
type: String,
value: "",
},
text: {
type: String,
value: "按钮",
},
size: {
type: String,
value: "default",
},
type: {
type: String,
value: "primary",
},
plain: {
type: Boolean,
value: false,
},
loading: {
type: Boolean,
value: false,
},
disabled: {
type: Boolean,
value: false,
},
},
data: {},
methods: {
triggerCustomEvent(e) {
this.triggerEvent("customevent", e);
},
_test() {
console.log("调用组件内部方法");
},
},
attached() {
this.triggerEvent("attached", {
methods: {
innermethod: this._test,
},
});
},
});

wxml 实现

src/mp/components/button/index.wxml
<button
class="wx-button"
style="{{style}}"
size="{{size}}"
type="{{type}}"
plain="{{plain}}"
loading="{{loading}}"
disabled="{{disabled}}"
bind:tap="triggerCustomEvent">
<block wx:if="{{!!text}}">{{text}}</block>
<block wx:else><slot name="titleSlot"></slot></block>
</button>

样式

src/mp/components/button/index.wxss
/* 本示例没有用到额外的样式,所以该文件为空。 */

源码参数说明

下面仅介绍了 index.js组件配置 的参数绑定。

你还需要遵循微信小程序的开发规范,完成 index.wxmlindex.js 的参数绑定。

properties

组件配置data 字段对应,用户在低代码编辑器 数据 栏里配置的参数,会被透传到该字段内。

properties.style

平台保留字段,用户在低代码编辑器 样式 栏里配置的参数,会被透传到该字段内。

methods

组件配置events 字段对应,通过 triggerEvent 方法,在合适的时机抛出自定义事件。