Skip to content

ライフサイクル(Lifecycle)

Lifecycle API は、ページ単位のライフサイクル通知を受け取れます。コールバックは登録したときのページに自動で紐づきます。

オンラインで試す

タイマーで onShow を再現ログをクリア

イベントログはここに表示されます…

ライフサイクル API のデモ

onLoad / onReady / onShow はマウント後、模擬タイミングで発火します。タイマーで追加ログ、またはクリアができます。

インポート

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): () => void
ts
const unsub = woo.onReady(() => {
  console.log('页面渲染完成,可以操作 DOM')
})

onShow

ページが表示されたり、前景に戻ったりしたときに発火します。

ts
woo.onShow(callback: () => void): () => void
ts
const unsub = woo.onShow(() => {
  console.log('页面显示')
  // 适合刷新数据
  refreshData()
})

onHide

ページが隠れたり、バックグラウンドに入ったりしたときに発火します。

ts
woo.onHide(callback: () => void): () => void
ts
const unsub = woo.onHide(() => {
  console.log('页面隐藏')
  // 适合暂停计时器、保存草稿
  pauseTimer()
})

onUnload

ページが破棄される前に発火します。

ts
woo.onUnload(callback: () => void): () => void
ts
const unsub = woo.onUnload(() => {
  console.log('页面即将销毁')
  // 清理资源
  cleanup()
})

onPullDownRefresh

プルリフレッシュ。先に enablePullDownRefresh() を呼び出してください。

ts
woo.onPullDownRefresh(callback: (payload?: any) => void): () => void
ts
// 启用下拉刷新
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): () => void
ts
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 = () => void

API 早見表

メソッド説明シグネチャ
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

MiniDev Studio — ミニアプリ開発ツールキット