微信小程序从入门到学会第七天小程序的自定义组件
一、前言
当我们多次使用同一个组件的时候,我们可以将其进行封装然后进行使用,这个时候,自定义组件就起到了很好的作用,前面虽然我们讲到了自定义组件,不过那都是皮毛,仅仅只是讲到了自定义组件的创建和使用罢了,下面我们来深入剖析自定义组件。首先看下目录:自定义组件的参数自定义组件的生命周期插槽
匿名插槽
具名插槽
外部样式
多样化的组件通信
1.双向绑定
2.父子组件互相传
组件共享
组件关系二、自定义组件的参数
定义段
类型
是否必填
描述
最低版本
properties
Object Map
否
组件的对外属性,是属性名到属性设置的映射表
data
Object
否
组件的内部数据,和 properties一同用于组件的模板渲染
observers
Object
否
组件数据字段监听器,用于监听 properties 和 data 的变化
2.6.1
methods
Object
否
组件的方法,包括事件响应函数和任意的自定义方法,关于事件响应函数的使用
behaviors
String Array
否
类似于mixins和traits的组件间代码复用机制
created
Function
否
组件生命周期函数-在组件实例刚刚被创建时执行,注意此时不能调用setData )
attached
Function
否
组件生命周期函数-在组件实例进入页面节点树时执行)
ready
Function
否
组件生命周期函数-在组件布局完成后执行)
moved
Function
否
组件生命周期函数-在组件实例被移动到节点树另一个位置时执行)
detached
Function
否
组件生命周期函数-在组件实例被从页面节点树移除时执行)
relations
Object
否
组件间关系
externalClasses
String Array
否
组件接受的外部样式类
options
Object Map
否
选项
lifetimes
Object
否
组件生命周期声明对象
2.2.3
pageLifetimes
Object
否
组件所在页面的生命周期声明对象
2.2.3
definitionFilter
Function
否
定义段过滤器,用于自定义组件扩展
2.2.3
生成的组件实例可以在组件的方法、生命周期函数和属性 observer 中通过 this访问。组件还有一些通用属性和方法,如下:
属性名
类型
描述
is
String
组件的文件路径
id
String
节点id
dataset
String
节点dataset
data
Object
组件数据, 包括内部数据和属性值
properties
Object
组件数据,包括内部数据和属性值(与 data一致)
router
Object
相对于当前自定义组件的Router对象
pageRouter
Object
相对于当前自定义组件所在页面的Router对象
方法名
参数
描述
最低版本
setData
Object newData
设置data并执行视图层渲染
hasBehavior
Object behavior
检查组件是否具有 behavior(检查时会递归检查被直接或间接引入的所有behavior)
triggerEvent
String name, Object detail, Object options
触发事件
createSelectorQuery
创建一个 SelectorQuery对象,选择器选取范围为这个组件实例内
createIntersectionObserver
创建一个IntersectionObserver对象,选择器选取范围为这个组件实例内
createMediaQueryObserver
创建一个 MediaQueryObserver 对象
2.11.1
selectComponent
String selector
使用选择器选择组件实例节点,返回匹配到的第一个组件实例对象(会被 wx://component-export 影响)
selectAllComponents
String selector
使用选择器选择组件实例节点,返回匹配到的全部组件实例对象组成的数组(会被 wx://component-export 影响)
selectOwnerComponent
选取当前组件节点所在的组件实例(即组件的引用者),返回它的组件实例对象(会被 wx://component-export 影响)
2.8.2
getRelationNodes
String relationKey
获取这个关系所对应的所有关联节点
groupSetData
Function callback
立刻执行 callback ,其中的多个 setData之间不会触发界面绘制(只有某些特殊场景中需要,如用于在不同组件同时 setData时进行界面绘制同步)
2.4.0
getTabBar
返回当前页面的 custom-tab-bar 的组件实例
2.6.2
getPageId
返回页面标识符(一个字符串),可以用来判断几个自定义组件实例是不是在同一个页面内
2.7.1
animate
String selector, Array keyframes, Number duration, Function callback
执行关键帧动画
2.9.0
clearAnimation
String selector Object options, Function callback
清除关键帧动画
2.9.0
setUpdatePerformanceListener
Object options Function listener
清除关键帧动画
2.12.0
注:以上内容来源于微信开放文档 二、自定义组件的参数
定义段
类型
是否必填
描述
最低版本
properties
Object Map
否
组件的对外属性,是属性名到属性设置的映射表
data
Object
否
组件的内部数据,和 properties一同用于组件的模板渲染
observers
Object
否
组件数据字段监听器,用于监听 properties 和 data 的变化
2.6.1
methods
Object
否
组件的方法,包括事件响应函数和任意的自定义方法,关于事件响应函数的使用
behaviors
String Array
否
类似于mixins和traits的组件间代码复用机制
created
Function
否
组件生命周期函数-在组件实例刚刚被创建时执行,注意此时不能调用setData )
attached
Function
否
组件生命周期函数-在组件实例进入页面节点树时执行)
ready
Function
否
组件生命周期函数-在组件布局完成后执行)
moved
Function
否
组件生命周期函数-在组件实例被移动到节点树另一个位置时执行)
detached
Function
否
组件生命周期函数-在组件实例被从页面节点树移除时执行)
relations
Object
否
组件间关系
externalClasses
String Array
否
组件接受的外部样式类
options
Object Map
否
选项
lifetimes
Object
否
组件生命周期声明对象
2.2.3
pageLifetimes
Object
否
组件所在页面的生命周期声明对象
2.2.3
definitionFilter
Function
否
定义段过滤器,用于自定义组件扩展
2.2.3
生成的组件实例可以在组件的方法、生命周期函数和属性 observer 中通过 this访问。组件还有一些通用属性和方法,如下:
属性名
类型
描述
is
String
组件的文件路径
id
String
节点id
dataset
String
节点dataset
data
Object
组件数据, 包括内部数据和属性值
properties
Object
组件数据,包括内部数据和属性值(与 data一致)
router
Object
相对于当前自定义组件的Router对象
pageRouter
Object
相对于当前自定义组件所在页面的Router对象
方法名
参数
描述
最低版本
setData
Object newData
设置data并执行视图层渲染
hasBehavior
Object behavior
检查组件是否具有 behavior(检查时会递归检查被直接或间接引入的所有behavior)
triggerEvent
String name, Object detail, Object options
触发事件
createSelectorQuery
创建一个 SelectorQuery对象,选择器选取范围为这个组件实例内
createIntersectionObserver
创建一个IntersectionObserver对象,选择器选取范围为这个组件实例内
createMediaQueryObserver
创建一个 MediaQueryObserver 对象
2.11.1
selectComponent
String selector
使用选择器选择组件实例节点,返回匹配到的第一个组件实例对象(会被 wx://component-export 影响)
selectAllComponents
String selector
使用选择器选择组件实例节点,返回匹配到的全部组件实例对象组成的数组(会被 wx://component-export 影响)
selectOwnerComponent
选取当前组件节点所在的组件实例(即组件的引用者),返回它的组件实例对象(会被 wx://component-export 影响)
2.8.2
getRelationNodes
String relationKey
获取这个关系所对应的所有关联节点
groupSetData
Function callback
立刻执行 callback ,其中的多个 setData之间不会触发界面绘制(只有某些特殊场景中需要,如用于在不同组件同时 setData时进行界面绘制同步)
2.4.0
getTabBar
返回当前页面的 custom-tab-bar 的组件实例
2.6.2
getPageId
返回页面标识符(一个字符串),可以用来判断几个自定义组件实例是不是在同一个页面内
2.7.1
animate
String selector, Array keyframes, Number duration, Function callback
执行关键帧动画
2.9.0
clearAnimation
String selector Object options, Function callback
清除关键帧动画
2.9.0
setUpdatePerformanceListener
Object options Function listener
清除关键帧动画
2.12.0
注:以上内容来源于微信开放文档 二、自定义组件的参数
定义段
类型
是否必填
描述
最低版本
properties
Object Map
否
组件的对外属性,是属性名到属性设置的映射表
data
Object
否
组件的内部数据,和 properties一同用于组件的模板渲染
observers
Object
否
组件数据字段监听器,用于监听 properties 和 data 的变化
2.6.1
methods
Object
否
组件的方法,包括事件响应函数和任意的自定义方法,关于事件响应函数的使用
behaviors
String Array
否
类似于mixins和traits的组件间代码复用机制
created
Function
否
组件生命周期函数-在组件实例刚刚被创建时执行,注意此时不能调用setData )
attached
Function
否
组件生命周期函数-在组件实例进入页面节点树时执行)
ready
Function
否
组件生命周期函数-在组件布局完成后执行)
moved
Function
否
组件生命周期函数-在组件实例被移动到节点树另一个位置时执行)
detached
Function
否
组件生命周期函数-在组件实例被从页面节点树移除时执行)
relations
Object
否
组件间关系
externalClasses
String Array
否
组件接受的外部样式类
options
Object Map
否
选项
lifetimes
Object
否
组件生命周期声明对象
2.2.3
pageLifetimes
Object
否
组件所在页面的生命周期声明对象
2.2.3
definitionFilter
Function
否
定义段过滤器,用于自定义组件扩展
2.2.3
生成的组件实例可以在组件的方法、生命周期函数和属性 observer 中通过 this访问。组件还有一些通用属性和方法,如下:
属性名
类型
描述
is
String
组件的文件路径
id
String
节点id
dataset
String
节点dataset
data
Object
组件数据, 包括内部数据和属性值
properties
Object
组件数据,包括内部数据和属性值(与 data一致)
router
Object
相对于当前自定义组件的Router对象
pageRouter
Object
相对于当前自定义组件所在页面的Router对象
方法名
参数
描述
最低版本
setData
Object newData
设置data并执行视图层渲染
hasBehavior
Object behavior
检查组件是否具有 behavior(检查时会递归检查被直接或间接引入的所有behavior)
triggerEvent
String name, Object detail, Object options
触发事件
createSelectorQuery
创建一个 SelectorQuery对象,选择器选取范围为这个组件实例内
createIntersectionObserver
创建一个IntersectionObserver对象,选择器选取范围为这个组件实例内
createMediaQueryObserver
创建一个 MediaQueryObserver 对象
2.11.1
selectComponent
String selector
使用选择器选择组件实例节点,返回匹配到的第一个组件实例对象(会被 wx://component-export 影响)
selectAllComponents
String selector
使用选择器选择组件实例节点,返回匹配到的全部组件实例对象组成的数组(会被 wx://component-export 影响)
selectOwnerComponent
选取当前组件节点所在的组件实例(即组件的引用者),返回它的组件实例对象(会被 wx://component-export 影响)
2.8.2
getRelationNodes
String relationKey
获取这个关系所对应的所有关联节点
groupSetData
Function callback
立刻执行 callback ,其中的多个 setData之间不会触发界面绘制(只有某些特殊场景中需要,如用于在不同组件同时 setData时进行界面绘制同步)
2.4.0
getTabBar
返回当前页面的 custom-tab-bar 的组件实例
2.6.2
getPageId
返回页面标识符(一个字符串),可以用来判断几个自定义组件实例是不是在同一个页面内
2.7.1
animate
String selector, Array keyframes, Number duration, Function callback
执行关键帧动画
2.9.0
clearAnimation
String selector Object options, Function callback
清除关键帧动画
2.9.0
setUpdatePerformanceListener
Object options Function listener
清除关键帧动画
2.12.0
注:以上内容来源于微信开放文档 二、自定义组件的参数
定义段
类型
是否必填
描述
最低版本
properties
Object Map
否
组件的对外属性,是属性名到属性设置的映射表
data
Object
否
组件的内部数据,和 properties一同用于组件的模板渲染
observers
Object
否
组件数据字段监听器,用于监听 properties 和 data 的变化
2.6.1
methods
Object
否
组件的方法,包括事件响应函数和任意的自定义方法,关于事件响应函数的使用
behaviors
String Array
否
类似于mixins和traits的组件间代码复用机制
created
Function
否
组件生命周期函数-在组件实例刚刚被创建时执行,注意此时不能调用setData )
attached
Function
否
组件生命周期函数-在组件实例进入页面节点树时执行)
ready
Function
否
组件生命周期函数-在组件布局完成后执行)
moved
Function
否
组件生命周期函数-在组件实例被移动到节点树另一个位置时执行)
detached
Function
否
组件生命周期函数-在组件实例被从页面节点树移除时执行)
relations
Object
否
组件间关系
externalClasses
String Array
否
组件接受的外部样式类
options
Object Map
否
选项
lifetimes
Object
否
组件生命周期声明对象
2.2.3
pageLifetimes
Object
否
组件所在页面的生命周期声明对象
2.2.3
definitionFilter
Function
否
定义段过滤器,用于自定义组件扩展
2.2.3
生成的组件实例可以在组件的方法、生命周期函数和属性 observer 中通过 this访问。组件还有一些通用属性和方法,如下:
属性名
类型
描述
is
String
组件的文件路径
id
String
节点id
dataset
String
节点dataset
data
Object
组件数据, 包括内部数据和属性值
properties
Object
组件数据,包括内部数据和属性值(与 data一致)
router
Object
相对于当前自定义组件的Router对象
pageRouter
Object
相对于当前自定义组件所在页面的Router对象
方法名
参数
描述
最低版本
setData
Object newData
设置data并执行视图层渲染
hasBehavior
Object behavior
检查组件是否具有 behavior(检查时会递归检查被直接或间接引入的所有behavior)
triggerEvent
String name, Object detail, Object options
触发事件
createSelectorQuery
创建一个 SelectorQuery对象,选择器选取范围为这个组件实例内
createIntersectionObserver
创建一个IntersectionObserver对象,选择器选取范围为这个组件实例内
createMediaQueryObserver
创建一个 MediaQueryObserver 对象
2.11.1
selectComponent
String selector
使用选择器选择组件实例节点,返回匹配到的第一个组件实例对象(会被 wx://component-export 影响)
selectAllComponents
String selector
使用选择器选择组件实例节点,返回匹配到的全部组件实例对象组成的数组(会被 wx://component-export 影响)
selectOwnerComponent
选取当前组件节点所在的组件实例(即组件的引用者),返回它的组件实例对象(会被 wx://component-export 影响)
2.8.2
getRelationNodes
String relationKey
获取这个关系所对应的所有关联节点
groupSetData
Function callback
立刻执行 callback ,其中的多个 setData之间不会触发界面绘制(只有某些特殊场景中需要,如用于在不同组件同时 setData时进行界面绘制同步)
2.4.0
getTabBar
返回当前页面的 custom-tab-bar 的组件实例
2.6.2
getPageId
返回页面标识符(一个字符串),可以用来判断几个自定义组件实例是不是在同一个页面内
2.7.1
animate
String selector, Array keyframes, Number duration, Function callback
执行关键帧动画
2.9.0
clearAnimation
String selector Object options, Function callback
清除关键帧动画
2.9.0
setUpdatePerformanceListener
Object options Function listener
清除关键帧动画
2.12.0
注:以上内容来源于微信开放文档
三、自定义组件的生命周期
组件也有许多生命周期函数,如下:
生命周期
参数
描述
最低版本
created
无
在组件实例刚刚被创建时执行
1.6.3
attached
无
在组件实例进入页面节点树时执行
1.6.3
ready
无
在组件在视图层布局完成后执行
1.6.3
moved
无
在组件实例被移动到节点树另一个位置时执行
1.6.3
detached
无
在组件实例被从页面节点树移除时执行
1.6.3
error
Object Error
每当组件方法抛出错误时执行
2.4.1
这些生命周期函数可以在自定义组件的参数外,也可以在组件的lifetimes参数内,这样优先级更高;还有一类是组件所在页面生命周期函数,如下:
生命周期
参数
描述
最低版本
show
无
组件所在的页面被展示时执行
2.2.3
hide
无
组件所在的页面被隐藏时执行
2.2.3
resize
Object Size
组件所在的页面尺寸变化时执行
2.4.0
这类生命周期函数必须在参数pageLifetimes内。
注:以上内容来源于微信开放文档
更多精彩好文敬请关注公众号"简易编程网"
手上设备多?协议五花八门?试试这款充电器吧从iPhone8时代开始,苹果就开始支持PD快充,而安卓阵营,谷歌更是不遗余力的推动PD协议的推广普及,今天给大家带来的这一款omthing30WUSBPD充电器配有1A1C两个输
百元多模无线鼠标,我选了它几乎每一台PC都离不开键盘鼠标这些日常外设,每个人也都会有自己的切身体会,购买轻薄本后,为了轻薄先后购买了联想N700雷柏M200Plus等超薄鼠标,但是无奈自己手比较大,轻薄鼠标
趁着米粉节,入手雷克沙NM6101TSSD前言近段时间,闪存市场再次翻脸,价格又开始蹭蹭蹭的往上窜了,本来一些1TM。2NVMe固态硬盘前段时间普遍都降到了700附近,可是现在又回归了900元的高位。本来都计划放弃了,突然
你那还戴口罩吗?看看我这个开篇想先问大家一个问题,四月份了,你那还必须戴口罩么?下面给大家带来的是一款看守者的更换滤芯式口罩,这个还能叫做口罩么?但是它又够不上呼吸器的级别,姑且算作口罩吧。买这个已经二十多
镜面数显电流表,都是充电器,你为什么这么优秀前言倍思,一个深耕手机配件市场多年的品牌,对用户需求的把握几乎达到了极致,随着各类快充技术的快速发展,确实为我们带来了诸多便利,但是对于普通消费者而言,判断快充并不是一件非常直观的
用上PSSD,才知道移动存储也可以这么快早就想入手一个PSSD了,曾经经历过数据被删的惨痛经历的我,深深地明白数据备份的重要性,也时刻保持至良好的数据备份习惯,但是NAS备份不可移动,普通的机械移动硬盘备份起来又比较慢,
直流变频,一键沐浴,浴霸,请选这个小弟所在的地界,就是曾经的网红城市,那个千里为重广大为庆的重庆。小弟是北方人,大学在这里读完就没有回去,一到冬天就开始想家,没有暖气的重庆,一个月也看不到两三次太阳那种冷真的是魔法
生活要规律,开心治百病2020丁香日历突如其来的这场疫情,让我更加重视起丁香医生的专业报道和评论,总感觉他给出的结论会更客观一些(也许是心理作用),近期当当网有一个50人团的活动,丁香医生健康日历2020只需要9。9还
充电器充电宝合二为一,小体积快速充出行神器现在的手机屏幕越做越大,电池容量也越来越高,但是可用时间却越来越少,人们出行已经习惯了在家里和公司各放一个充电器,出差的时候还要多带一个充电宝,何其麻烦。其实,早在2017年,An
放弃砖头,轻装上阵致港TypeC转联想方口电源线很多使用联想ThinkPad商务本的内心都有一个痛,那就是充电口基本上都是采用了联想独有的方口充电口,无法通用的特性绝对可以教会你出门(差)背上充电器,尤其是最近几年,PD快充协议
颜值即正义的移动电源有这么一款移动电源,它没有特别强悍的快充能力,不会动不动就支持45W30W,甚至是18W的PD快充协议都不支持,但是它有着非常不错的颜值,你会支持吗?下面就让我们来看一看爱国者在几