created
attached
ready
moved
detached
error
在小程序组件中,最重要的生命周期函数有3个,分别是created、attached、detached。它们各自的特点
如下:
lifetimes: {// 生命周期函数,可以为函数,或一个在 methods 段中定义的方法名created: function () { },attached: function () { },detached: function () { },
},
组件生命周期 | 微信开放文档 (qq.com)
有时,自定义组件的行为依赖于页面状态的变化,此时就需要用到组件所在页面的生命周期。例如:每当触发页面的shoW生命周期函数的时候,我们希望能够重新生成一个随机的RGB颜色值。
show
hide
resize
组件所在页面的生命周期函数,需要定义在pageLifetimes节点中,示例代码如下:
pageLifetimes:{show:function(){},//页面被展示hide:function(){},//页面被隐藏resize:function(size){}//页面尺寸变化
}
案例
methods:{_randomColor() {this.setData({_rgb: {r: Math.floor(Math.random() * 256),g: Math.floor(Math.random() * 256),b: Math.floor(Math.random() * 256)}})}
},
pageLifetimes: {show: function () {this._randomColor()}}
在自定义组件的wxl结构中,可以提供一个
节点(插槽),用于承载组件使用者提供的wxml结构。
在小程序中,默认每个自定义组件中只允许使用一个 在小程序的自定义组件中,需要使用多 父子组件之间通信的3种方式 属性绑定 事件绑定 获取组件实例 behaviors | 微信开放文档 (qq.com) Behavior(Object object) | 微信开放文档 (qq.com) behaviors是小程序中,用于实现组件间代码共享的特性,类似于Vue.js中的“mixins”。 每个behavior可以包含一组属性、数据、生命周期函数和方法。组件引用它时,它的属性、数据和方法会被 每个组件可以引用多个behavior,behavior也可以引用其它behavior。 在组件中,使用require()方法导入需要的behavior,挂载后即可访问behavior中的数据或方法,示例代码 组件和它引用的behavior中可以包含同名的字段,此时可以参考如下3种同名时的处理规则:
插槽时,可以在组件的js文件中,通过如下方式进行启用。options:{multipleSlots:true//在组件定义时的选项中启用多slot支持
}
9. 组件父子组件间的通信
// home.js - 父组件的data节点
data:{count:0
}// home.wxml - 父组件的wxml结构
// test4.js - 子组件的properties节点
properties:{count:Number
},methods: {addCount(){this.setData({count:this.data.count+1})}}// test4.wxml - 子组件的wxml结构
// 父组件 home.js
syncCount(e) {this.setData({count: e.detail.value})
},// 父组件 home.wxml
// 父组件定义通过`bind:名称`的方式定义事件,传递给子组件
// 子组件 test4.js
methods: {addCount(){this.setData({count:this.data.count+1})// 触发自定义事件,将数组传给父组件this.triggerEvent('sync',{value:this.properties.count})}
}// 子组件 test4.wxml
this.selectComponent(id或class选择器)
获取子组件实例对象// 父组件 home.js
getChild() {const child = this.selectComponent('.customA')child.setData({count:child.properties.count+1})
},// 父组件 home.wxml -> 给子组件设置class 或 id
10. 组件-behaviors
合并到组件中。// behaviors\my-behaviors.js
module.exports = Behavior({data: {username: 'zs'},properties: {},methods: {},behaviors:[]//引入其它的behavior
})
如下:// component\test4\test4.js 与Component({})同级
const myBehaviors = require('../../behaviors/my-behaviors')Componet({behaviors: [myBehaviors],...
})
// componet\test4\test4.wxml