ライフサイクル(Lifecycle)
Lifecycle API は、ページ単位のライフサイクル通知を受け取れます。コールバックは登録したときのページに自動で紐づきます。
オンラインで試す
イベントログはここに表示されます…
インポート
ts
import woo from 'mini-sdk'
// 或
import { lifecycle } from 'mini-sdk'ライフサイクル図
页面创建 ──► onLoad(params) ──► onReady() ──► onShow()
│
onHide() ◄────── 切换到后台/其他页面 ◄┘
│
└──► 再次显示 ──► onShow()
│
└──► 页面销毁 ──► onUnload()API 一覧
onLoad
ページの読み込み時。ルーティング引数を受け取れます。
ts
woo.onLoad(callback: (params: Record<string, any>) => void): () => void戻り値: 購読を解除する関数
ts
const unsub = woo.onLoad((params) => {
console.log('页面参数:', params)
// 如通过 navigateTo({ url: '/pages/detail?id=1' }) 进入
// params = { id: "1" }
})
// 取消订阅(在组件卸载时调用)
unsub()onReady
初回レンダリングが完了したときに発火します。
ts
woo.onReady(callback: () => void): () => voidts
const unsub = woo.onReady(() => {
console.log('页面渲染完成,可以操作 DOM')
})onShow
ページが表示されたり、前景に戻ったりしたときに発火します。
ts
woo.onShow(callback: () => void): () => voidts
const unsub = woo.onShow(() => {
console.log('页面显示')
// 适合刷新数据
refreshData()
})onHide
ページが隠れたり、バックグラウンドに入ったりしたときに発火します。
ts
woo.onHide(callback: () => void): () => voidts
const unsub = woo.onHide(() => {
console.log('页面隐藏')
// 适合暂停计时器、保存草稿
pauseTimer()
})onUnload
ページが破棄される前に発火します。
ts
woo.onUnload(callback: () => void): () => voidts
const unsub = woo.onUnload(() => {
console.log('页面即将销毁')
// 清理资源
cleanup()
})onPullDownRefresh
プルリフレッシュ。先に enablePullDownRefresh() を呼び出してください。
ts
woo.onPullDownRefresh(callback: (payload?: any) => void): () => voidts
// 启用下拉刷新
await woo.enablePullDownRefresh()
// 监听下拉刷新
const unsub = woo.onPullDownRefresh(async () => {
await refreshData()
woo.stopPullDownRefresh() // 停止下拉刷新动画
})enablePullDownRefresh
現在のページのプルリフレッシュを有効にします。
ts
await woo.enablePullDownRefresh()stopPullDownRefresh
プルリフレッシュのアニメーションを止めます。
ts
await woo.stopPullDownRefresh()ページの分離
プルリフレッシュの状態はページごとに分かれます。ページが隠れると当該ページのプルリフレッシュ状態は消え、戻ると再度有効化が必要な場合があります。
onReachBottom
スクロールが下端に達したとき。無限スクロール向けです。
ts
woo.onReachBottom(callback: () => void): () => voidts
let page = 1
const unsub = woo.onReachBottom(async () => {
page++
const moreData = await fetchList(page)
appendToList(moreData)
})フレームワーク連携
vue
<script setup>
import { onMounted, onUnmounted } from 'vue'
import woo from 'mini-sdk'
let cleanups = []
onMounted(() => {
cleanups.push(
woo.onLoad((params) => {
console.log('页面参数:', params)
}),
woo.onShow(() => {
console.log('页面显示')
}),
woo.onHide(() => {
console.log('页面隐藏')
}),
)
})
onUnmounted(() => {
cleanups.forEach(fn => fn())
})
</script>tsx
import { useEffect } from 'react'
import woo from 'mini-sdk'
function MyPage() {
useEffect(() => {
const unsubs = [
woo.onLoad((params) => {
console.log('页面参数:', params)
}),
woo.onShow(() => {
console.log('页面显示')
}),
woo.onHide(() => {
console.log('页面隐藏')
}),
]
return () => unsubs.forEach(fn => fn())
}, [])
return <div>My Page</div>
}型定義
ts
type LifecycleCallback = (params?: Record<string, any>) => void
type LifecycleUnsubscribe = () => voidAPI 早見表
| メソッド | 説明 | シグネチャ |
|---|---|---|
onAppLaunch | アプリ初回起動 | (callback) → Unsubscribe |
onAppShow | フォアグラウンド | (callback) → Unsubscribe |
onAppHide | バックグラウンド | (callback) → Unsubscribe |
onAppError | アプリ全体のエラー | (callback) → Unsubscribe |
onShow | ページ表示 | (callback) → Unsubscribe |
onHide | ページ非表示 | (callback) → Unsubscribe |
onReady | 初回描画完了 | (callback) → Unsubscribe |
onUnload | ページ破棄 | (callback) → Unsubscribe |
onPullDownRefresh | プルリフレッシュ | (callback) → Unsubscribe |
onReachBottom | 最下部到達 | (callback) → Unsubscribe |
onPageScroll | ページスクロール | (callback) → Unsubscribe |