微信小程序开发4
组件的创建与引用
创建组件
- 在项目的根目录,创建components 文件夹
- 在新建components的文件夹 下新建组件文件夹,鼠标右键组件文件夹,点击新建component
- 之后组件文件夹会自动生成四个文件
局部引入组件
在页面的 .json 配置 中引入组件
{
"usingComponents":{
"my-test1":"/components/test/test"
}
}
全局引入组件
在app.json
全局配置文件中引入组件
"usingComponents":{
"my-test1":"/components/test2/test2"
}
区别
- 如果某组件只在特定的页面中被用到,建议进行“局部引用”
- 如果某组件在多个页面中经常被用到,建议进行“全局引用”
- 组件的 .json 文件中需要声明 “component”: true 属性
- 组件的 .js 文件中调用的是 Component() 函数
- 整个程序启动调用的是 App()
- 某个页面的渲染调用的是 Page()
- 某个组件的渲染调用的是 Component()
- 组件的事件处理函数需要定义到 methods 节点中
组件的样式
默认自定义组件样式只对当前组件生效,不会影响到组件之外的ui结构
修改组件隔离选项
默认情况下,自定义组件的样式隔离特性能够防止组件内外样式互相干扰的问题。
也可以在外界控制内部的样式,但需要修改隔离选项
// 在组件的.js 文件中新增加如下配置
Component({
options: {
// 默认值isolated: 代表启动样式隔离
// apply-shared: 代表页面wxss样式将影响自定义组件
// shared: 代表双向的影响
styleIsolation: 'isolated'
}
})
// 或在组件的.json 文件中新增加如下配置
{
"styleIsolation": "isolated"
}
styleIsolation 的可选值
组件的数据,方法,属性
在小程序组件中,用于组件模板渲染的私有数据,需要定义到data节点中
在小程序组件中,事件处理函数和自定义方法需要定义到 methods节点中
在小程序组件中,
properties
是组件的对外属性,用来接收外界(父组件)传递到组件中的数据data和properties的区别
- data更倾向于存储组件的私有数据
- properties 更倾向于储存外界传递到组件中的数据
- 不太建议修改properties的数据
- 如要修改,最好通过子组件通信给父组件的方法实现
数据监听器
数据监听用于监听和响应任何属性和数据字段的变化
作用类型于vue中的watch侦听器
- 语法
Components({
// observers: 观察者
observers: { '字段A, 字段B': function(字段A的新值, 字段B的新值) {
// do something
}
})
组件的声明周期
- 最重要的就是 created , attached , ready , detached 。
- 组件实例刚被创建好的时候, created 生命周期函数会被触发
- 此时调用setDate不会有效果
- 通常在这个声明周期函数中,只应用于给组件的this添加一些自定义属性字段
- 在组件完全初始化完毕、进入页面节点树后, attached 生命周期函数会被触发
- 此时 ,this.data已经初始化完毕
- 这个生命周期很有用,绝大多数初始化的工作可以在这个时机进行(例如发请求获取初始数据)
- 在组件离开页面节点树后, detached 生命周期函数会被触发
- 退出一个页面时,会触发页面内每个自定义组件的 detached 生命周期函数
- 此时适合做一些清理性质的工作,例如,清除定时器
- 代表组件渲染完成的生命周期函数为 ready
- 可以操作页面
- 组件实例刚被创建好的时候, created 生命周期函数会被触发
在小程序组件中,生命周期可以直接定义在component构造器的第一级参数中,也可以在lifetimes字段进行声明
Component({
// 推荐用法
lifetimes: {
attached() {}, // 在组件实例进入页面节点树时执行
detached() {}, // 在组建实例被从页面节点树移除时执行
}
})
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 麟玖Sam!