5. 使用 slot
// 頁面
< Test> < view> 自定義內容</ view>
</ Test> // 組件
< view> < view> 前面的內容</ view> < slot> </ slot> < view> 后面的內容</ view>
</ view>
// 頁面
<Test><view slot='n1'>自定義內容1</view><view slot='n2'>自定義內容2</view>
</Test>// 組件
<view><slot name='n1'></slot><slot name='n2'></slot>
</view>
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 . dataobj. 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) { }
} )