
标题 | 详情 |
|---|---|
作者简介 | 愚公搬代码 |
头衔 | 华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,CSDN商业化专家,阿里云专家博主,阿里云签约作者,腾讯云优秀博主,腾讯云内容共创官,掘金优秀博主,亚马逊技领云博主,51CTO博客专家等。 |
近期荣誉 | 2022年度博客之星TOP2,2023年度博客之星TOP2,2022年华为云十佳博主,2023年华为云十佳博主等。 |
博客内容 | .NET、Java、Python、Go、Node、前端、IOS、Android、鸿蒙、Linux、物联网、网络安全、大数据、人工智能、U3D游戏、小程序等相关领域知识。 |
欢迎 | 👍点赞、✍评论、⭐收藏 |
随着移动互联网的快速发展,微信小程序作为一种新兴的应用形态,已经成为了众多开发者和企业的重要选择。它不仅拥有广泛的用户基础,还具备轻便、便捷的特点,能够实现丰富的功能和良好的用户体验。而在小程序的开发过程中,自定义组件的使用则是提升代码复用性和维护性的重要手段。
本文将深入探讨微信小程序自定义组件的基础知识。我们将为您介绍自定义组件的概念、创建方法以及使用场景,帮助您在小程序开发中更高效地构建复杂的用户界面。无论您是小程序开发的新手,还是希望进一步提升开发技能的老手,相信本文都能为您提供有价值的参考。
让我们一起踏上探索自定义组件的旅程,掌握这一重要技能,为您的小程序开发增添更多可能性!
在小程序开发框架中提供了非常丰富的内置组件,很多时候,自定义组件也是在这些内置组件的基础上进行组合和扩展而来的。
component 的文件夹,用来存放你创建的自定义组件。pages 文件夹下,创建一组名为 customComponent 的页面文件,用于演示自定义组件。JSON 文件:负责组件的配置。WXML 文件:负责组件的结构。WXSS 文件:负责组件的样式。JavaScript 文件:负责组件的数据和逻辑。component 文件夹下新建一组名为 component1 的自定义组件文件。无需手动创建每个文件,微信开发者工具提供了相应的创建工具:component 文件夹,选择弹出菜单中的“新建 Component”选项,工具会自动为你创建所需的文件。component1.json 文件component1.json 文件中默认生成的代码:{
"component": true,
"usingComponents": {}
}component 设置为 true,标志着这是一个自定义组件。component1.wxml)component1.wxml 文件中,编写组件的结构代码:<view>
<view style="text-align: center;">{{title}}</view>
<slot></slot>
</view>slot 插槽,允许在使用自定义组件时,将内部的元素插入到指定位置。component1.js)component1.js 文件中,定义组件的外部属性。这里我们定义了一个名为 title 的属性,用来设置标题文本:Component({
properties: {
title: {
type: String,
value: "自定义组件的标题"
}
}
});title 的类型为 String,默认值为 "自定义组件的标题"。customComponent.json 文件中,注册使用自定义组件,代码如下:{
"usingComponents": {
"component1": "../../component/component1/component1"
}
}component1 组件能够正确加载。customComponent.wxml)customComponent.wxml 中使用自定义组件,代码如下:<component1 title="按钮组">
<view style="display: flex; flex-direction: row; justify-content: space-between;">
<button type="primary" size="mini">按钮1</button>
<button type="primary" size="mini">按钮2</button>
<button type="primary" size="mini">按钮3</button>
</view>
</component1>title 属性设置组件标题。slot 插槽,组件内部的内容(按钮)将被插入到 slot 标签所在的位置。
Component 构造器概述在开发自定义组件时,页面的数据和方法是通过 Page 构造器配置的,自定义组件也是通过 Component 构造器来进行配置。下面我们将详细介绍 Component 构造器中传入的可配置属性,以及其内部封装的一些方法。
Component 构造器参数对象的属性Component 构造器接受一个配置对象,配置对象的属性如下表所示:
属性名 | 类型 | 说明 |
|---|---|---|
| 对象 | 配置组件的外部属性,允许指定属性类型、默认值等。 |
| 对象 | 组件内部使用的数据。 |
| 对象 | 组件的数据监听器,可以监听 |
| 对象 | 组件的内部方法。 |
| 数组 | 混入到组件中的行为。 |
| 函数 | 组件创建时的生命周期函数。 |
| 函数 | 组件挂载到页面时的生命周期函数。 |
| 函数 | 组件准备就绪时的生命周期函数。 |
| 函数 | 组件从一个页面移动到另一个页面时的生命周期函数。 |
| 函数 | 组件从页面中卸载时的生命周期函数。 |
| 对象 | 定义组件间的关系。 |
| 数组 | 定义组件可接收的外部样式类。 |
| 对象 | 组件的选项对象。 |
| 对象 | 组件的生命周期声明对象。 |
| 对象 | 组件所在页面的生命周期声明对象。 |
| 函数 | 定义过滤器,用于组件扩展。 |
properties 配置项在 Component 中,properties 是非常重要的配置项,它用于定义组件的外部属性(即父组件传递给当前组件的数据)。每个属性都可以指定类型、默认值、回调函数等。具体的配置对象如下表所示:
属性名 | 类型 | 说明 |
|---|---|---|
| 数组 | 属性的类型,例如 |
| 数组 | 可选类型。 |
| 任意类型 | 属性的初始值。 |
| 函数 | 当属性值变化时的回调函数。 |
在组件的方法、生命周期函数以及监听回调中,可以使用 this 关键字来访问组件实例对象。以下是 Component 构造器生成的组件实例对象可以访问的属性和可调用的方法。
属性名 | 类型 | 说明 |
|---|---|---|
| 字符串 | 获取组件节点的 ID。 |
| 对象 | 获取组件节点的 |
| 对象 | 获取组件的数据。 |
| 对象 | 获取组件的外部属性。 |
| 对象 | 获取组件所在页面的路由对象。 |
方法名 | 参数 | 说明 |
|---|---|---|
|
| 设置组件的 |
|
| 触发自定义事件。 |
| 无 | 创建一个选择器对象,用于获取组件实例。 |
| 无 | 创建一个 |
| 无 | 创建一个 |
|
| 使用选择器选择组件实例节点,返回匹配到的第一个实例。 |
|
| 使用选择器选择组件实例节点,返回匹配到的所有实例。 |
|
| 获取指定关系所对应的所有关联节点。 |
|
| 设置性能更新监听器。 |
|
| 执行关键帧动画。 |
|
| 清除关键帧动画。 |
this.data 来访问组件的数据,但直接修改 this.data 不会同步更新视图。为了触发视图更新,必须使用 this.setData() 方法进行数据修改。组件的生命周期方法用于管理组件从创建到销毁的整个过程。与页面的生命周期不同,组件除了拥有自身的生命周期方法外,还可以通过 pageLifetimes 选项来感知和响应页面的生命周期。
方法名 | 意义 |
|---|---|
| 组件实例被创建时执行的回调方法。此时组件的数据未准备好,不能调用 |
| 组件实例被挂载到页面时的回调方法。 |
| 组件在视图层布局完成后的回调方法。 |
| 组件在节点树中的位置移动时的回调方法。 |
| 组件被从页面节点树移除时的回调方法。 |
| 组件发生错误时的回调方法。 |
created:当组件实例被创建时调用。此时,组件的数据尚未准备好,不能调用 setData 方法进行数据修改。attached:当组件被挂载到页面时调用,这时可以开始访问组件的数据和界面。ready:组件的视图渲染完成时调用,通常在这里进行视图相关的初始化操作。moved:当组件在父容器中位置发生变化时调用,主要用于处理位置变化的相关逻辑。detached:组件从页面的 DOM 树中移除时调用,通常在这里进行清理操作,如销毁定时器等。error:当组件内部发生错误时调用,通常用于捕获错误并进行处理。pageLifetimes 选项pageLifetimes 选项使得组件可以感知并响应其所在页面的生命周期变化。这是组件与页面生命周期交互的一种方式。
方法名 | 意义 |
|---|---|
| 当组件所在的页面被展示时的回调方法。 |
| 当组件所在的页面被隐藏时的回调方法。 |
| 当组件所在的页面尺寸发生变化时的回调方法(如旋转屏幕)。 |
pageLifetimes 方法说明show:当组件所在的页面被展示时调用,适用于页面重新展示时需要触发的操作。hide:当组件所在的页面被隐藏时调用,通常用于处理组件隐藏时的资源清理。resize:当页面尺寸变化时(如旋转屏幕)调用,适用于处理页面布局变化的逻辑。created, attached, ready 等),还可以通过 pageLifetimes 选项感知页面生命周期的变化(如 show, hide, resize)。created 生命周期中,组件的 data 尚未准备好,无法调用 setData 方法来更新数据。原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。