微信小程序入门之自定义组件(05)

简介: 微信小程序入门之自定义组件(05)

一、 创建自定义组件


类似于页面,一个自定义组件由 json wxml wxss js 4个文件组成

可以在微信开发者⼯具中快速创建组件的⽂件结构



在⽂件夹内 components/myHeader ,创建组件 名为 myHeader




1. 声明组件


⾸先需要在组件的 json ⽂件中进⾏⾃定义组件声明

myHeader.json
{
  "component": true
}


2. 编辑组件


同时,还要在组件的 wxml ⽂件中编写组件模板,在 wxss ⽂件中加⼊组件样式

slot 表⽰插槽,类似vue中的slot

myHeader.wxml


<!-- 这是自定义组件的内部WXML结构 -->

<view class="inner">

{{innerText}}

   <slot></slot>

</view>


在组件的 wxss ⽂件中编写样式

注意:在组件wxss中不应使用ID选择器、属性选择器和标签名选择器。

myHeader.wxss


/* 这里的样式只应用于这个自定义组件 */

.inner {

 color: red;

 }


3. 注册组件


在组件的 js ⽂件中,需要使⽤ Component() 来注册组件,并提供组件的属性定义、内部数据和 ⾃定义⽅法

myHeader.js


Component({
  properties: {
    // 这里定义了innerText属性,属性值可以在组件使用时指定
    innerText: {
      // 期望要的数据是 string类型
      type: String,
      value: 'default value',
   }
 },
  data: {
    // 这里是一些组件内部数据
    someData: {}
 },
  methods: {
    // 这里是一个自定义方法
    customMethod: function(){}
 }
})


二、声明引⼊自定义组件


⾸先要在⻚⾯的 json ⽂件中进⾏引⽤声明。还要提供对应的组件名和组件路径

index.wxml


{

// 引用声明

 "usingComponents": {

// 要使用的组件的名称     // 组件的路径

   "my-header":"/components/myHeader/myHeader"

}

}


三、页面中使用自定义组件

<view>
  <!-- 以下是对一个自定义组件的引用 -->
  <my-header inner-text="Some text">
    <view>用来替代slot的</view>
    </my-header>
</view>

四、其他属性


五、定义段与示例方法


Component 构造器可⽤于定义组件,调⽤ Component 构造器时可以指定组件的属性、数据、⽅法 等。


定义段 类型 是否必填 描述

properties Object Map 否 组件的对外属性,是属性名到属性设置的映射表,参⻅下⽂

data Object 否 组件的内部数据,和 properties ⼀同⽤于组件的模板渲 染

observers Object 否 组件数据字段监听器,⽤于监听 properties 和 data 的变 化,参⻅ 数据监听器

methods Object 否 组件的⽅法,包括事件响应函数和任意的⾃定义⽅法,关于 事件响应函数的使⽤,参⻅ 组件事件

created Function 否 组件⽣命周期函数,在组件实例刚刚被创建时执⾏,注意此 时不能调⽤ setData ,参⻅组件⽣命周期

attached Function 否 组件⽣命周期函数,在组件实例进⼊⻚⾯节点树时执⾏,参⻅组件⽣命周期

ready Function 否 组件⽣命周期函数,在组件布局完成后执⾏,参⻅ 组件⽣命周期

moved Function 否 组件⽣命周期函数,在组件实例被移动到节点树另⼀个位置 时执⾏,参⻅ 组件⽣命周期

detached Function 否 组件⽣命周期函数,在组件实例被从⻚⾯节点树移除时执 ⾏,参⻅ 组件⽣命周期

六、组件-自定义组件传参


⽗组件通过属性的⽅式给⼦组件传递参数

⼦组件通过事件的⽅式向⽗组件传递参数

过程


⽗组件 把数据 {{tabs}} 传递到 ⼦组件的 tabItems 属性中

⽗组件 监听 onMyTab 事件

⼦组件 触发 bindmytap 中的 mytap 事件 (⾃定义组件触发事件时,需要使⽤ triggerEvent ⽅法,指定 事件名 、 detail 对象)

⽗ -> ⼦ 动态传值 this.selectComponent("#tabs");

父组件代码


// page.wxml
<tabs tabItems="{{tabs}}" bindmytap="onMyTab" >
 内容-这里可以放插槽
</tabs>
// page.js
  data: {
    tabs:[
     {name:"体验问题"},
     {name:"商品、商家投诉"}
   ]
 },
  onMyTab(e){
    console.log(e.detail);
 }


子组件代码

// com.wxml
<view class="tabs">
  <view class="tab_title"  >
    <block  wx:for="{{tabItems}}" wx:key="{{item}}">
      <view bindtap="handleItemActive" data-index="{{index}}">{{item.name}}</view>
    </block>
  </view>
  <view class="tab_content">
    <slot></slot>
  </view>
</view>
// com.js
Component({
  properties: {
    tabItems:{
      type:Array,
      value:[]
   }
 },
  /**
   * 组件的初始数据
   */
  data: {
 },
  /**
   * 组件的方法列表
   */
  methods: {
    handleItemActive(e){
      this.triggerEvent('mytap','haha');
   }
 }
})



小结


标签名 是 中划线的⽅式

属性的⽅式 也是要中划线的⽅式

其他情况可以使⽤驼峰命名

(1). 组件的⽂件名如 myHeader.js 的等

(2). 组件内的要接收的属性名 如 innerText


目录
相关文章
|
2天前
|
小程序
微信小程序快速入门 - 10分钟入门
微信小程序快速入门 - 10分钟入门
3 0
|
10天前
|
小程序 安全
微信小程序自定义底部导航栏
微信小程序自定义底部导航栏
|
11天前
|
JSON 小程序 搜索推荐
微信小程序如何自定义tabbar
微信小程序如何自定义tabbar
13 3
|
19天前
|
小程序
微信小程序-其他常用组件
该内容是关于微信小程序组件的介绍,主要包括`button`、`image`和`navigator`。`button`组件比HTML的按钮功能更丰富,通过`open-type`可调用微信功能,如客服、转发等。组件属性包括类型(如`primary`、`warn`)和尺寸(`size`)。`image`组件默认宽300px,高240px,支持设置属性来调整显示效果。`navigator`组件用于页面导航,类似HTML的a标签,常用于页面间的跳转。
20 0
|
19天前
|
小程序
微信小程序-常用的基础内容组件
以下是内容的摘要: 本文介绍了微信小程序中几个重要的组件:text、rich-text和progress。text组件类似于HTML的span标签,用于显示文本,通过selectable属性可实现长按选中文本。rich-text组件能够将HTML字符串渲染成WXML结构,展示富文本内容。progress组件则用于展示进度条,支持不同状态(如成功、警告、等待等)以及自定义颜色和宽度。icon组件则提供了一组预定义的图标,可用于表示各种操作状态或提示信息。
14 0
|
19天前
|
小程序 前端开发 定位技术
微信小程序-常用的视图容器类组件
该内容是关于微信小程序组件的分类和部分具体组件的介绍。主要分为9大类:视图容器、基础内容、表单组件、导航组件、媒体组件、地图组件、画布组件、开放能力和无障碍访问。其中详细讲解了`view`、`scroll-view`、`swiper`及`swiper-item`等组件的用途和示例。`view`用于构建页面布局,`scroll-view`支持滚动效果,`swiper`则用于创建轮播图。此外,还提到了`root-portal`、`page-container`等其他特殊用途的组件。
17 0
|
22天前
|
小程序 API 数据安全/隐私保护
微信小程序开发中的一些常用标签
这些标签是微信小程序开发中的基础,开发者可以根据需要组合使用这些标签来构建小程序的界面。每个标签都有其属性和事件,可以通过属性来调整组件的样式和行为,通过事件来响应用户的操作。
43 5
|
9天前
|
小程序 JavaScript Java
基于SpringBoot+Vue+uniapp微信小程序的外卖小程序的研究与开发的详细设计和实现
基于SpringBoot+Vue+uniapp微信小程序的外卖小程序的研究与开发的详细设计和实现
12 0
|
10天前
|
小程序 JavaScript Java
基于SpringBoot+Vue+uniapp微信小程序的智慧旅游平台开发微信小程序的详细设计和实现
基于SpringBoot+Vue+uniapp微信小程序的智慧旅游平台开发微信小程序的详细设计和实现
29 8
|
18天前
|
PHP
PHP公众号开发给用户发微信消息提醒功能
该内容是一个关于如何在时间紧迫的情况下,通过微信客服消息接口实现用户资金到账或成员变动时发送微信通知的项目总结。
23 2