微信小程序 发现之旅(二)—— 自定义组件

组件化的项目开发中,组件应当划分为三个层次:组件、模块、页面

微信小程序已经为开发者封装好了基础组件,页面文件(pages)也有了详细的规定

而模块就需要自行开发,并且要和页面文件区分开,这就涉及到自定义组件

一、基本用法

在根目录下创建一个 components 目录,用于存放自定义组件

组件也是由 json、wxml、wxss、js 四个文件组成

其中 wxml 部分没有什么特殊的地方,和页面的写法一致

wxss 也是只对组件生效,而且 app.wxss 中的样式也不会对自定义组件生效

最关键的地方在于,需要在 json 中添加配置项:

将 component 字段设为 true,这样才能注册这个自定义组件

当需要在页面中使用自定义组件的时候,在页面的 json 文件中添加声明:

{
  "usingComponents": {
    "组件名": "组件路径"
  }
}

然后就能在页面的 wxml 中直接使用该组件

二、参数传递  组件与组件之间的参数传递比较复杂,留到下一篇博客中细说,这里只介绍 properties 

小程序的页面 pages 需要使用 Page() 来注册,而组件则需要 Component() 构造器

如果组件需要接受一个外部数据,比如一个列表组件的数据源 data,可以这么配置:

这里的 properties 类似于 vue 中的 props,表示该对象下的属性将从外部传入

properties 可设置 type、value、observer 三个属性

其中 type 用于指定字段类型( Number,String,Array,Object,Function)

value 表示字段的默认值,observer 用于定义该字段的监听函数

在页面上调用组件的时候,直接给 data 赋值就好:

PS:开发中应当避免使用 data 为前缀的属性名(如 data-info),这会被识别为 dataset 中的参数

三、组件插槽

小程序的组件也可以使用 <slot> 来扩展内容

然后父组件引入这个组件的时候,可以在组件中插入节点,节点内容会渲染到 <slot> 节点的位置

组件默认只能有一个 <slot>,如果需要添加多个插槽,首先需要在组件 js 中声明

Component({
  options: {
    multipleSlots: true // 在组件定义时的选项中启用多slot支持
  },
  properties: { /* ... */ },
  methods: { /* ... */ }
})

然后需要给 <slot> 命名,以 name 来区分各个插槽

并在引用组件的时候,给节点指定对应的 <slot>

四、Behaviors

在 Vue 的项目中,可以采用 mixin 来引入一些公共方法或参数,小程序的 behaviors和 mixin 十分相似

每个 behavior 通常是一个单独的 js 文件,由 Behavior() 构造器创建,和 Components() 组件构造器类似,可以包含一组属性、数据、生命周期函数和方法

// components/behaviors/wise.js
module.exports = Behavior({
  behaviors: [],  // 可以引用别的 behaviors
  properties: {
    subName: {
      type: String
    }
  },
  data: {
    subInfo: ‘so cool you are‘
  },
  attached: function () {},
  methods: {
    handleSubmit: function () {
      console.log(‘submit‘)
    }
  }
})

使用的时候,在组件中引入,然后声明该 behaviors

然后就能直接在组件中使用 behaviors 中定义的数据了

原文地址:https://www.cnblogs.com/wisewrong/p/8962635.html

时间: 2024-07-28 19:24:32

微信小程序 发现之旅(二)—— 自定义组件的相关文章

微信小程序动态生成保存二维码

起源:最近小程序需要涉及到一些推广方面的功能,所以要写一个动态生成二维码用户进行下载分享,写完之后受益良多,特此来分享一下: 一.微信小程序动态生成保存二维码 wxml: <canvas style="width: 350rpx;height: 350rpx;background:#f1f1f1;" canvas-id="mycanvas"/> js: // pages/qrcode/qrcode.js var QR = require("..

微信小程序把玩(十三)progress组件

原文:微信小程序把玩(十三)progress组件 进度条描述的是一种加载的状态,比如软件升级下载进度, 视频,图片下载进度- 主要属性: wxml <progress percent="80" show-info="true" stroke-width="5" color="red" active="true"/>

微信小程序把玩(十一)icon组件

原文:微信小程序把玩(十一)icon组件 这些是提供的所支持的图标样式,根据需求在此基础上去修改大小和颜色. 主要属性: 使用方式: wxml <!--成功图标--> <icon type="success" size="40"/> <!--安全成功标志图标--> <icon type="safe_success" size="40"/> <!--提示信息图标-->

微信小程序把玩(九)scroll-view组件

原文:微信小程序把玩(九)scroll-view组件 scroll-view为滚动视图,分为水平滚动和垂直滚动.注意滚动视图垂直滚动时一定要设置高度否则的话scroll-view不会生效.滚动视图常用的地方一般都是Item项比较多的界面,比如我的模块 主要属性: 使用演示: wxml <!--垂直滚动,这里必须设置高度--> <scroll-view scroll-y="true" style="height: 200px"> <vie

微信小程序(4)--二维码窗口

微信小程序二维码窗口: <view class="btn" bindtap="powerDrawer" data-statu="open">button</view> <!--mask--> <view class="drawer_screen" bindtap="powerDrawer" data-statu="close" wx:if=&qu

当微信小程序遇到AR(二)

当微信小程序遇到AR,会擦出怎么样的火花?期待与激动...... 通过该教程,可以从基础开始打造一个微信小程序的AR框架,所有代码开源,提供大家学习. 第二章:基石-摄像头数据获取 [目的] 微信小程序获取摄像头数据,可以实时获得每一帧的每一个像素数据. [准备] 下面需要搭建环境,做一些准备工作. 首先,需要注册微信小程序开发者.注册地址=> 注册成功之后,需要下载微信小程序开发工具.下载地址=> 目前笔者的开发环境是:Windows 10 下载的微信小程序版本为:RC v1.0.2.190

微信小程序踩坑(二)——微信小程序recorderManager和innerAudioContext相关

目录 写在前面 RecorderManager录音相关 innerAudioContext播放相关 写在前面 关于微信小程序的录音和语音方面,踩了很多坑,记录一下 recorderManager相关文档 innerAudioContext相关文档 RecorderManager录音相关 在使用RecorderManager相关方法之前,在page外先定义全局唯一的录音管理器: const recorderManager = wx.getRecorderManager(); 录音开始 record

微信小程序社交立减金活动组件使用手册v1.0

小程序社交立减金活动组件使用手册v1.0 社交立减金活动组件介绍 1.社交立减金组件简介 社交立减金活动是微信支付向拥有小程序的商家提供的营销工具,商家可在自有小程序内嵌入社交立减金活动组件,用户在小程序内发起分享后立即获得一定金额的立减金,可用于小程序内或线下门店交易减价,被分享人也可以获得相应金额的立减金. 社交立减金能有效促成站(店)内分享的用户当笔交易/下次复购,站(店)外用户通过领取的立减金直达站(店)内核销,实现用户拉新. 2.社交立减金组件特点?? 3.示例图 ??4.适用场景 (

微信小程序开发学习(二)

一些官方API 总结了一些官方API,便于之后有用时针对性查找(发现官方给了好多好用的API)官方API文档 基础 wx.canIUse:判断小程序的API,回调,参数,组件等是否在当前版本可用,返回值为boolean. 使用${API}.${method}.${param}.${options}或者${component}.${attribute}.${option}方式来调用 参数说明 ${API}代表API名字 ${method}代表调用方式,有效值为return,success, obj