小程序学习之自定义组件

272 阅读6分钟

一,创建并使用自定义组

1,创建组件

1>,在项目的根目录中,鼠标右键,创建components->xxx文件夹。 2>,在对应的xxx文件夹上鼠标右键,点击"新建Component"。 3>,输入相应组件名会自动生成组件相应的四个文件,后缀名分别为.js,.json,.wxml和.wxss。

image.png

2,使用自定义组件

组件的引用分“全局引用”和“局部引用”。 1>,全局引用:在app.json中,在和pages同级下创建usingComponents。 2>,局部引用:在对应页面的.json文件内使用usingComponents。

image.png

my_test2可以随意写,代表引用的组件名称,后面对应的路径是组件的创建目录。

二,自定义组件的data和methods

1,data数据

在小程序组建中,用于组件模板的渲染的私有数据,需要定义到data节点中。

image.png

2,methods方法

在小程序组件中,事件处理函数和自定义方法需要定义到methods节点中。示例代码如下:

image.png

三,自定义组件的properties

在小程序组件中,properties是组件对外的属性,用来接收外界传递到组件中的数据。

1,properties 属性创建有两种方式,推荐第一种。

第一种完整定义带默认值 比如

image.png

第二种不带默认值

image.png

2,页面传入 以及在组件内使用该属性如下所示:

image.png

image.png

3,data和properties的区别

在小程序组件中data和properties用法相同,都是可读可写的,不过: 1.data更倾向于存储组件的私有数据。 2.properties更倾向于存储外界传递到组件中的数据。

四,自定义组件的数据监听器。

1.什么是数据监听器

数据监听器用于监听和响应任何属性和数据字段的变化,从而执行特定的操作。它的作用类似于vue中的watch侦听器。在小程序组件中,数据监听器的基本语法格式如下:

image.png

2.数据监听器的基本用法。

实现数据相加监听的js代码如下:

image.png

3.监听对象属性的变化。

数据监听器支持单个或者多个属性的变化,示例代码如下:

image.png

五,组件的生命周期。

1.组件的全部生命周期函数

image.png

2.组件主要的生命周期函数。

在小程序组件中,最重要的生命周期函数有三个,分别是created,attached,detached。它们特点如下:

1>,组件实例刚被创建好的时候,created函数会被触发。

  • 此时还不能调用setData.
  • 只能添加一些自定义属性的字段。

2>,在组件完全初始化完毕,进入页面树节点后,attached生命周期函数会被触发。

  • 此时,this.data已经被初始化完毕。
  • 绝大多数的初始化工作在这里进行(比如网络请求)。

3>,在组件离开节点树后,detached函数将被触发。

  • 退出一个页面时,会触发页面内每个被自定义组件的detached生命周期函数。
  • 此时适合做一些清理性的工作。

3.lifetimes节点

在小程序组件中,生命周期函数可以直接定义在Component构造器的第一级参数中,可以在lifetimes字段内进行声明(推荐此种方式,优先级最高),以下两种同时存在时,只生效lifetimes内的代码,示例如下:

image.png

六,组件所在页面的生命周期函数。

1.什么是组件所在页面的生命周期。

有时候,自定义组件的行为依赖于页面状态的变化,此时就需要用到组件所在页面的生命周期。如下:

image.png

2.pageLifetiems节点。

组件所在的页面的生命周期函数,需要定义在pageLifetimes节点中。如下:

image.png

七,自定义组件-插槽

1.什么是插槽。

在自定义组件的wxml中,可以提供一个节点(插槽),用于承载组件使用者提供的wxml结构。

image.png

2.单个插槽。

在小程序中,默认每个自定义组件只允许用一个进行占位,这种个数上的限制叫单个插槽。

image.png

3.启用多个插槽。

在小程序的自定义组件中,需要使用多个插槽时,可以在组件.js文件中,通过如下方式启用。

image.png

4.定义多个插槽。

可以在组件的.wxml中使用多个标签,用不同的name作为区分:

image.png

5.使用多个插槽。

在使用带有多个插槽的自定义组件时,需要使用slot属性来将节点插入到不同的标签中,如下:

image.png

八,自定义组件-父子组件之间的通信。

1.父子组件之间的三种通信方式。

1>,属性绑定

  • 用于父组件向子组件的指定属性设置数据,仅能设置json兼容的数据。

2>,事件绑定

  • 用于子组件向父组件传递数据,可以传递任意类型。

3>,获取组件实例

  • 父组件还可以通过this.selectComponent()方法来获取子组件的实例。
  • 这样就可以访问子组件任意的数据和方法。

2.属性绑定

属性绑定用于父向子传递数据,只能传递基本数据类型,无法传递方法。如下:

image.png

3.事件绑定

事件绑定用于子向父传递数据。可以传递任意数据类型。如下步骤:

1>,在父组件的.js文件中,定义一个函数,这个函数将通过自定义事件的形式,传递给子组件。

image.png

2>,在父组件的.wxml文件中,通过自定义的形式,将步骤一中定义的函数引用,传递给子组件。

image.png

3>,在子组件的.js文件中,通过调用 this.triggerEvent('自定义事件名称',{/参数对象/})将数据传递到父组件中。

image.png

4>,在父组件的.js中,通过e.detail.value获取数据.

4.获取组件实例。

可以在父组件中通过this.selectComponent(“id或者class选择器”),从而获取子组件的实例。

image.png

九,自定义组件-behaviors

1.什么是behaviors

behaviors是小程序中,实现组件间代码共享的特性,类似于vue中的mixins。

image.png

2.behaviors的工作方式。

每个behaviors可以包含一组属性,数据,生命周期函数和方法。组件引用它时,它的属性,数据和方法会被并入组件中。 每个组件可以引用多个behaviors。behavior也可以引用其他的behavior。

3.创建behavior

调用Behavior(Object object)方法即可创建一个可共享的behavior实例。如下:

image.png

4.导入并使用behavior

在组件中通过require()方法导入对应的behavior,挂载后即可访问behavior的方法和属性。

image.png