【小程序】一文学会微信小程序自定义组件封装

简介: 【小程序】一文学会微信小程序自定义组件封装

 image.gif编辑

一、什么是自定义组件

       在实际开发过程中,经常会有代码复用的情况,即在不同的页面有类似结构的代码块,类似的代码反复出现,这样会增加代码维护成本,也会造成代码的高耦合,为了解决这一情况,微信小程序支持了更为简洁的组件化编程,称之为自定义组件。自定义组件在使用时与基础组件非常相似。

二、创建自定义组件

1、自定义组件类似于页面,一个自定义组件由 jsonwxml wxssjs4个文件组成。

2、要开发一个自定义组件,首先需要在组件的json 文件中进行自定义组件声明(将 component 字段设为 true 可将这一组文件设为自定义组件)

{
  "component": true
}
image.gif

3、同时,为简化小程序包整体的规范性和简洁性,在创建是可在小程序根目录新建一个文件夹components来专门放自定义组件。再在components文件夹中新建一个自定义组件的文件夹,文件夹名即为该自定义组件的组件名。

image.gif编辑

4、在新建好的组件包上右键,选择新建component,然后再次输入组件名。

image.gif编辑

5、输入后,系统会自动生成json  wxml wxss js 4个文件,到此即为新建自定义组件成功

image.gif编辑

三、如何使用自定义组件

1、使用已注册的自定义组件前,首先要在页面的 json 文件中进行引用声明。此时需要提供每个自定义组件的标签名和对应的自定义组件文件路径:

{
  "usingComponents": {
    "popup":"../../components/popup/popup"
  }
}
image.gif

2、使用示例

//index.wxml  组件承载页面 父组件
<view class="container">
  <popup></popup>
</view>
————————————————————————————————————————————————————————————————
//components/popup/popup.wxml 自定义组件 子组件
<view>自定义组件 - 文案</view>
image.gif

运行结果

image.gif编辑

四、组件模板和样式

类似于页面,自定义组件拥有自己的 wxml 模板和 wxss 样式。组件模板的写法与页面模板相同。组件模板与组件数据结合后生成的节点树,将被插入到组件的引用位置上。在组件模板中可以提供一个 <slot> 节点,用于承载组件引用时提供的子节点。

使用示例

//pages/index.wxml   组件承载页面 父组件
<view>
  <popup>
    <!-- 这部分内容将被放置在组件 <slot> 的位置上 -->
    <view>这里是插入到组件slot中的内容</view>
   </popup>
</view>
//components/popup/popup.wxml   自定义组件 子组件
<view >
  <view class="content">这里是组件的内部节点</view>
  <slot></slot>
</view>
image.gif
// components/popup/popup.wxss 组件样式模板
.content{
  text-align: center;
  padding: 16rpx;
  background-color: #f5f5f5;
}
image.gif

运行结果

image.gif编辑

五、组件间通信与事件

与普通的 WXML 模板类似,可以使用数据绑定,这样就可以向子组件的属性传递动态数据。

在以下例子中,组件的属性 propApropB 将收到页面传递的数据。页面可以通过 setData 来改变绑定的数据字段。

注意:这样的数据绑定只能传递 JSON 兼容数据

父组件:

(wxml文件)

<view>
    <component-tag-name prop-a="{{dataFieldA}}"prop-b="{{dataFieldB}}"> 
            <!-- 这部分内容将被放置在组件 <slot> 的位置上 -->
        <view>这里是插入到组件slot中的内容</view>
    </component-tag-name>
</view>
image.gif

(js文件)

const app = getApp()
Page({
  data: {
    dataFieldA:"",
    dataFieldB:""
  },
  onLoad: function () {
  },
})

image.gif

子组件:

(wxml文件)

<!-- wxml组件模板 -->
<view class="wrapper">
  <view>这里是组件的内部节点</view>
  <slot></slot>
</view>

image.gif

(js文件)

// components/component-tag-name.js
Component({
  /**
   * 组件的属性列表
   */
  properties: {
    prop-a:{},
    prop-b:{}
  },
  /**
   * 组件的初始数据
   */
  data: {
  },
  /**
   * 组件的方法列表
   */
  methods: {
  }
})

image.gif

总结

以上就是微信小程序自定义组件的基本使用方法啦。

image.gif编辑


目录
相关文章
|
2月前
|
存储 JSON 小程序
微信小程序入门之新建并认识小程序结构
微信小程序入门之新建并认识小程序结构
57 1
ly~
|
3月前
|
存储 供应链 小程序
除了微信小程序,PHP 还可以用于开发哪些类型的小程序?
除了微信小程序,PHP 还可用于开发多种类型的小程序,包括支付宝小程序、百度智能小程序、抖音小程序、企业内部小程序及行业特定小程序。在电商、生活服务、资讯、工具、娱乐、营销等领域,PHP 能有效管理商品信息、订单处理、支付接口、内容抓取、复杂计算、游戏数据、活动规则等多种业务。同时,在企业内部,PHP 可提升工作效率,实现审批流程、文件共享、生产计划等功能;在医疗和教育等行业,PHP 能管理患者信息、在线问诊、课程资源、成绩查询等重要数据。
ly~
84 6
|
14天前
|
人工智能 小程序 API
【一步步开发AI运动小程序】十三、自定义一个运动分析器,实现计时计数02
本文介绍如何利用“云智AI运动识别小程序插件”开发AI运动小程序,详细解析了俯卧撑动作的检测规则构建与执行流程,涵盖卧撑和撑卧两个姿态的识别规则,以及如何通过继承`sports.SportBase`类实现运动分析器,适用于小程序开发者。
|
14天前
|
人工智能 小程序 API
【一步步开发AI运动小程序】十二、自定义一个运动分析器,实现计时计数01
随着AI技术的发展,AI运动APP如雨后春笋般涌现,如“乐动力”、“天天跳绳”等,推动了云上运动会、线上健身等热潮。本文将指导你从零开始开发一个AI运动小程序,利用“云智AI运动识别小程序插件”,介绍运动识别原理、计量方式及运动分析器基类的使用,帮助你在小程序中实现运动计时和计数功能。下篇将继续探讨运动姿态检测规则的编写。
|
2月前
|
小程序
微信小程序动态tabBar实现:基于自定义组件,灵活支持不同用户角色与超过5个tab自由组合(更新版)
微信小程序动态tabBar实现:基于自定义组件,灵活支持不同用户角色与超过5个tab自由组合(更新版)
625 1
|
2月前
|
小程序 搜索推荐 API
微信小程序:自定义关注公众号组件样式
尽管关注公众号组件的样式固定且不可修改,但产品经理的需求却需要个性化的定制。在这种情况下,我们需要寻找解决方案,以满足这些特殊需求,尽管这可能有点棘手。
78 0
微信小程序:自定义关注公众号组件样式
|
2月前
|
小程序 JavaScript API
微信小程序开发之:保存图片到手机,使用uni-app 开发小程序;还有微信原生保存图片到手机
这篇文章介绍了如何在uni-app和微信小程序中实现将图片保存到用户手机相册的功能。
952 0
微信小程序开发之:保存图片到手机,使用uni-app 开发小程序;还有微信原生保存图片到手机
|
4月前
|
小程序 开发者
Taro@3.x+Vue@3.x+TS开发微信小程序,使用自定义tabBar
本文介绍了如何在Taro项目中实现自定义tabBar。首先,在`app.config.ts`中设置`custom: true`并配置`tabBar`。
169 0
Taro@3.x+Vue@3.x+TS开发微信小程序,使用自定义tabBar
|
2月前
|
小程序
uniapp实现微信小程序隐私协议组件封装
uniapp实现微信小程序隐私协议组件封装
53 0
|
2月前
|
小程序 前端开发 数据可视化
微信商城小程序WeiMall
微信商城小程序WeiMall
38 0
下一篇
DataWorks