Skip to content

ダイアログとフィードバック

フィードバック用コンポーネントは、ユーザーへの通知や、操作結果の取得に用います。

コンポーネントの比較

コンポーネント操作のブロックユーザー操作主な用途
Toastいいえいいえ軽い通知(成功/失敗)
Loadingはい(マスク)いいえ非同期処理の待機
Dialogはいはい(確定/キャンセル)重要操作の確認
Alertはいはい(OK)情報の表示
ActionSheetはいはい(項目選択)下部からの複数操作

Toast

操作を阻害しません。一定時間で自動的に消えます。

ts
// 最简用法
await woo.showToast('操作成功')

// 完整参数
await woo.showToast({
  title: '保存成功',
  icon: 'success',    // 'success' | 'error' | 'loading' | 'none'
  duration: 2000,     // 持续时间(ms)
})

// 手动关闭
await woo.hideToast()

想定する用途

  • 操作結果:保存成功、削除成功
  • 重要度の低い案内:ネットワーク状態の変化 など

Loading

マスク付きのローディング表示で、操作をブロックします。

ts
// 最简用法
woo.showLoading('加载中...')

// 完整参数
woo.showLoading({
  title: '提交中...',
  mask: true,  // 是否显示遮罩(默认 true)
})

// 异步操作完成后关闭
try {
  await submitForm()
  woo.showToast('提交成功')
} finally {
  woo.hideLoading()
}

注意

showLoadingshowToast は同時表示できません。showLoading を呼ぶと現在の Toast が閉じられ、逆の場合も同様です。

Dialog

モーダルなダイアログで、ユーザーの選択を待ちます。

ts
const result = await woo.showDialog({
  title: '提示',
  content: '确认退出登录?',
  cancelText: '取消',
  confirmText: '退出',
})

if (result.confirm) {
  await logout()
}

パラメータ

フィールドデフォルト説明
titlestring""タイトル
contentstring""本文
cancelTextstring""キャンセルボタンのラベル(空なら非表示)
confirmTextstring""確定ボタンのラベル

戻り値

ts
interface ShowDialogResult {
  confirm: boolean  // 是否点击确认
  cancel: boolean   // 是否点击取消
}

Alert

ボタンが 1 つの簡易メッセージです。

ts
// 最简用法
await woo.alert('操作完成')

// 完整参数
await woo.alert({
  title: '温馨提示',
  content: '您的会员即将到期,请及时续费',
  buttonText: '我知道了',
})

ActionSheet

画面下から出てくる複数選択用の操作リストです。

ts
try {
  const { index } = await woo.showActionSheet({
    itemList: ['拍照', '从相册选择', '从文件选择'],
  })

  switch (index) {
    case 0: takePhoto(); break
    case 1: chooseFromAlbum(); break
    case 2: chooseFromFile(); break
  }
} catch (err) {
  // 用户点击取消或遮罩关闭
  if (err.code === BridgeErrorCode.UserCancelled) {
    console.log('用户取消选择')
  }
}

戻り値

ts
interface ShowActionSheetResult {
  index: number  // 选择的项索引(从 0 开始)
}

組み合わせの例

ts
async function deleteItem(id: string) {
  // 1. 确认对话框
  const { confirm } = await woo.showDialog({
    title: '确认删除',
    content: '删除后无法恢复,是否继续?',
    cancelText: '取消',
    confirmText: '删除',
  })

  if (!confirm) return

  // 2. 显示加载
  woo.showLoading('删除中...')

  try {
    // 3. 执行删除
    await woo.request.del(`/api/items/${id}`)

    // 4. 成功提示
    woo.showToast({ title: '删除成功', icon: 'success' })

    // 5. 返回列表页
    setTimeout(() => woo.navigateBack(), 1500)
  } catch (err) {
    // 6. 错误提示
    woo.showToast({ title: '删除失败', icon: 'none' })
  } finally {
    woo.hideLoading()
  }
}

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