一,创建并使用自定义组
1,创建组件
1>,在项目的根目录中,鼠标右键,创建components->xxx文件夹。 2>,在对应的xxx文件夹上鼠标右键,点击"新建Component"。 3>,输入相应组件名会自动生成组件相应的四个文件,后缀名分别为.js,.json,.wxml和.wxss。
2,使用自定义组件
组件的引用分“全局引用”和“局部引用”。 1>,全局引用:在app.json中,在和pages同级下创建usingComponents。 2>,局部引用:在对应页面的.json文件内使用usingComponents。
my_test2可以随意写,代表引用的组件名称,后面对应的路径是组件的创建目录。
二,自定义组件的data和methods
1,data数据
在小程序组建中,用于组件模板的渲染的私有数据,需要定义到data节点中。
2,methods方法
在小程序组件中,事件处理函数和自定义方法需要定义到methods节点中。示例代码如下:
三,自定义组件的properties
在小程序组件中,properties是组件对外的属性,用来接收外界传递到组件中的数据。
1,properties 属性创建有两种方式,推荐第一种。
第一种完整定义带默认值 比如
第二种不带默认值
2,页面传入 以及在组件内使用该属性如下所示:
3,data和properties的区别
在小程序组件中data和properties用法相同,都是可读可写的,不过: 1.data更倾向于存储组件的私有数据。 2.properties更倾向于存储外界传递到组件中的数据。
四,自定义组件的数据监听器。
1.什么是数据监听器
数据监听器用于监听和响应任何属性和数据字段的变化,从而执行特定的操作。它的作用类似于vue中的watch侦听器。在小程序组件中,数据监听器的基本语法格式如下:
2.数据监听器的基本用法。
实现数据相加监听的js代码如下:
3.监听对象属性的变化。
数据监听器支持单个或者多个属性的变化,示例代码如下:
五,组件的生命周期。
1.组件的全部生命周期函数
2.组件主要的生命周期函数。
在小程序组件中,最重要的生命周期函数有三个,分别是created,attached,detached。它们特点如下:
1>,组件实例刚被创建好的时候,created函数会被触发。
- 此时还不能调用setData.
- 只能添加一些自定义属性的字段。
2>,在组件完全初始化完毕,进入页面树节点后,attached生命周期函数会被触发。
- 此时,this.data已经被初始化完毕。
- 绝大多数的初始化工作在这里进行(比如网络请求)。
3>,在组件离开节点树后,detached函数将被触发。
- 退出一个页面时,会触发页面内每个被自定义组件的detached生命周期函数。
- 此时适合做一些清理性的工作。
3.lifetimes节点
在小程序组件中,生命周期函数可以直接定义在Component构造器的第一级参数中,可以在lifetimes字段内进行声明(推荐此种方式,优先级最高),以下两种同时存在时,只生效lifetimes内的代码,示例如下:
六,组件所在页面的生命周期函数。
1.什么是组件所在页面的生命周期。
有时候,自定义组件的行为依赖于页面状态的变化,此时就需要用到组件所在页面的生命周期。如下:
2.pageLifetiems节点。
组件所在的页面的生命周期函数,需要定义在pageLifetimes节点中。如下:
七,自定义组件-插槽
1.什么是插槽。
在自定义组件的wxml中,可以提供一个节点(插槽),用于承载组件使用者提供的wxml结构。
2.单个插槽。
在小程序中,默认每个自定义组件只允许用一个进行占位,这种个数上的限制叫单个插槽。
3.启用多个插槽。
在小程序的自定义组件中,需要使用多个插槽时,可以在组件.js文件中,通过如下方式启用。
4.定义多个插槽。
可以在组件的.wxml中使用多个标签,用不同的name作为区分:
5.使用多个插槽。
在使用带有多个插槽的自定义组件时,需要使用slot属性来将节点插入到不同的标签中,如下:
八,自定义组件-父子组件之间的通信。
1.父子组件之间的三种通信方式。
1>,属性绑定
- 用于父组件向子组件的指定属性设置数据,仅能设置json兼容的数据。
2>,事件绑定
- 用于子组件向父组件传递数据,可以传递任意类型。
3>,获取组件实例
- 父组件还可以通过this.selectComponent()方法来获取子组件的实例。
- 这样就可以访问子组件任意的数据和方法。
2.属性绑定
属性绑定用于父向子传递数据,只能传递基本数据类型,无法传递方法。如下:
3.事件绑定
事件绑定用于子向父传递数据。可以传递任意数据类型。如下步骤:
1>,在父组件的.js文件中,定义一个函数,这个函数将通过自定义事件的形式,传递给子组件。
2>,在父组件的.wxml文件中,通过自定义的形式,将步骤一中定义的函数引用,传递给子组件。
3>,在子组件的.js文件中,通过调用 this.triggerEvent('自定义事件名称',{/参数对象/})将数据传递到父组件中。
4>,在父组件的.js中,通过e.detail.value获取数据.
4.获取组件实例。
可以在父组件中通过this.selectComponent(“id或者class选择器”),从而获取子组件的实例。
九,自定义组件-behaviors
1.什么是behaviors
behaviors是小程序中,实现组件间代码共享的特性,类似于vue中的mixins。
2.behaviors的工作方式。
每个behaviors可以包含一组属性,数据,生命周期函数和方法。组件引用它时,它的属性,数据和方法会被并入组件中。 每个组件可以引用多个behaviors。behavior也可以引用其他的behavior。
3.创建behavior
调用Behavior(Object object)方法即可创建一个可共享的behavior实例。如下:
4.导入并使用behavior
在组件中通过require()方法导入对应的behavior,挂载后即可访问behavior的方法和属性。