5. 使用 slot
// 页面
<Test>
<view>自定义内容view>
Test>
// 组件
<view>
<view>前面的内容view>
<slot>slot>
<view>后面的内容view>
view>
// 页面
自定义内容1
自定义内容2
// 组件
Component({
options: {
multipleSlots: true
},
.....
}
vue => 页面组件 获取数据 ajax
=> 公共组件 复用的ui模块
小程序 => 页面 获取数据 ajax (很多钩子好好学习) ★
=> 组件 复用的ui模块
6. 定义段与示例方法
Component
构造器可用于定义组件,调用Component
构造器时可以指定组件的属性、数据、方法等。
定义段 |
类型 |
是否必填 |
描述 |
properties(★) |
Object Map |
否 |
组件的对外属性,是属性名到属性设置的映射表,参见下文 |
data(★) |
Object |
否 |
组件的内部数据,和 properties 一同用于组件的模板渲染 |
observers(★) |
Object |
否 |
组件数据字段监听器,用于监听 properties 和 data 的变化,类似vue里面的 watch |
methods(★) |
Object |
否 |
组件的方法,包括事件响应函数和任意的自定义方法,关于事件响应函数的使用,参见 组件事件 |
created |
Function |
否 |
组件生命周期函数,在组件实例刚刚被创建时执行,注意此时不能调用 setData ,参见 组件生命周期 |
attached(★) |
Function |
否 |
组件生命周期函数,在组件实例进入页面节点树时执行,参见 组件生命周期 |
ready |
Function |
否 |
组件生命周期函数,在组件布局完成后执行,参见 组件生命周期 |
moved |
Function |
否 |
组件生命周期函数,在组件实例被移动到节点树另一个位置时执行,参见 组件生命周期 |
detached |
Function |
否 |
组件生命周期函数,在组件实例被从页面节点树移除时执行,参见 组件生命周期 |
observers :{
name(newVal) {
console.log('新值', newVal)
},
obj(newVal) {
console.log('新值obj', newVal)
},
'obj.num'(newVal) {
console.log('新值obj的num', newVal)
}
},
const { obj } = this.data
obj.num = 100
this.setData({
name :'大马哥',
obj,
})
7. 组件通信
- 父传子 : 父组件通过属性传递给子组件数据
- 子传父 : 子组件通过事件传递给父组件数据
7.1 父传子
<Test msg='父的数据'></Test>
properties: {
msg : String,
msg: {
type: String,
value: ''
}
},
<view> 父传子 : {{ msg }} </view>
attached() {
console.log(123, this.properties.msg)
}
7.2 子传父
myTap(e) {
console.log('父的方法:', e.detail)
}
<Test bindmytap='myTap'></Test>
methods: {
fn() {
this.triggerEvent('mytap', '子的数据')
}
},
7.3 命名规则
"usingComponents": {
"nav-header" : "/components/NavHeader/NavHeader"
}
<nav-header></nav-header>
<my-component></my-component>
<nav-header prop-a='aa' prop-b='bb'>nav-header>
<my-component my-class='cls'>my-component>
小程序生命周期
1. 应用生命周期
属性 |
类型 |
默认值 |
必填 |
说明 |
onLaunch |
function |
|
否 |
监听小程序初始化。 |
onShow |
function |
|
否 |
监听小程序启动或切前台。 |
onHide |
function |
|
否 |
监听小程序切后台。 |
onError |
function |
|
否 |
错误监听函数。 |
onPageNotFound |
function |
|
否 |
页面不存在监听函数。 |
App({
onLaunch() {
console.log('onLaunch')
},
onShow() {
console.log('onShow')
},
onHide() {
console.log('onHide')
},
onError(err) {
},
onPageNotFound(err) {
console.log('找不到页面',err)
}
})
2. 页面生命周期
属性 |
类型 |
说明 |
data |
Object |
页面的初始数据 |
onLoad |
function |
生命周期回调—监听页面加载 |
onShow |
function |
生命周期回调—监听页面显示 |
onReady |
function |
生命周期回调—监听页面初次渲染完成 |
onHide |
function |
生命周期回调—监听页面隐藏 |
onUnload |
function |
生命周期回调—监听页面卸载 |
onPullDownRefresh |
function |
监听用户下拉动作 |
onReachBottom |
function |
页面上拉触底事件的处理函数 |
onShareAppMessage |
function |
用户点击右上角转发 |
onPageScroll |
function |
页面滚动触发事件的处理函数 |
onResize |
function |
页面尺寸改变时触发,详见 响应显示区域变化 |
onTabItemTap |
function |
当前是 tab 页时,点击 tab 时触发 |
Page({
onLoad: function(options) {
},
onShow: function() {},
onReady: function() {
},
onHide: function() {},
onUnload: function() {
wx.redirectTo({
url: '/pages/one/one'
})
},
onPullDownRefresh: function() {},
onReachBottom: function() {},
onShareAppMessage: function() {},
onPageScroll(e) {
console.log(e.scrollTop)
},
onResize() {
console.log('尺寸变化了')
},
onTabItemTap(res) {
}
})