微信小程序从入门到学会第七天小程序的自定义组件
一、前言
当我们多次使用同一个组件的时候,我们可以将其进行封装然后进行使用,这个时候,自定义组件就起到了很好的作用,前面虽然我们讲到了自定义组件,不过那都是皮毛,仅仅只是讲到了自定义组件的创建和使用罢了,下面我们来深入剖析自定义组件。首先看下目录:自定义组件的参数自定义组件的生命周期插槽
匿名插槽
具名插槽
外部样式
多样化的组件通信
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内。
注:以上内容来源于微信开放文档
更多精彩好文敬请关注公众号"简易编程网"
为什么现在总听到华为和格力,曾经红极一时的海尔干啥去了?海尔到国际市场高调去了,已经连续十三年全球大家电第一了!海尔智家的产品有一半是以海尔自己的品牌买到了国外,不是代工也不是贴牌!海尔集团营收已经过3000亿了!张瑞敏已经平稳的把海尔
无纸化学习越来越热门,但是万一iPad坏了怎么办?坏了不怕,只要文件还在,其他的都不是问题所以你需要一个带云盘的APP软件。说说我的解决方案1用GoodNotes我记笔记一般用GoodNotes,50元永久使用价格。打开PDF版的
总投资560亿,中芯国际再次出手,联手国家队攻坚缺芯问题文JING审核子扬校对知秋中国制造业的命脉,人才缺口达到300万,又一就业风口迎来黄金十年作为制造业大国,中国更是被称为世界工厂。但中国并非制造业强国,与欧美国家相比,中国制造业无
京东副总裁身患绝症,为活命斥资千万造新药,是自救也是为救人文财图说编辑财图说他是身家过亿的京东副总裁,是互联网财税联盟会长,是中国电子发票第一人,更是各大顶尖高校争相邀请的做客教授。按照所有成功学意义上的标准来衡量他,他都是在当下社会能够
2021macbookpro使用一周16g内存,1t硬盘的配置,平时经常开12个androidstudio,13个idea,偶尔docker,mysql等等,本来想定制32g,512ssd的,一个要等,另外一个,觉得
网速越来越慢找到原因了路由器已经成为每个家庭必不可少的设备之一,一台小小的无线的路由器就能让全家人上网,一般情况下,很多网友家里的路由器设备每天都是24小时开着的,那么现在问题来了,在路由器不用的情况下
深思挖矿就是挖坑来源读特国家发改委在昨天举行的例行新闻发布会上宣布,将持续做好虚拟货币挖矿全链条治理工作,下一步将以产业式集中式挖矿国有单位涉及挖矿和比特币挖矿为重点开展全面整治。所谓挖矿,简单说
省钱买A7M4?晒晒趴趴双十一买了啥今年最想要购入的产品可能就是已经发布,但是很难买到的A7M4了,有朋友到实体店询问说要等半年以上对于A7M4趴趴不止吐槽了一次了,鬼子的刀法一如既往地恶心曾经的屠龙者也终成了恶龙,
酒店的投影仪除了看片,还能这么用外出旅游住酒店,顾客最在意的是什么?除了干净卫生,那就是酒店的舒适度和创意点,好的创意点决定了酒店能吸引多少顾客,而舒适度决定了酒店能积攒多少回头客。近年来,国内的民宿和单体酒店数
推进支付体系畅通微信支付与10余家银行机构实现互联互通本报记者王宁支付服务市场互联互通已成为行业趋势,越来越多的生态开放及支付合作正在开展。近日,腾讯微信支付与多家银行机构合作,在全面推进互联互通上取得显著进展,合作机构包括云闪付工商
阿里人永远不变的是变化很荣幸刚成为一名阿里人,入职以来一直在支付宝工作。在这三年里,感受最深的是永远不变的是变化。先说公司,支付宝的公司愿景是人人都用支付宝。从公司架构产品品种销售方式到合规理念等等一直