# LoadingToast - 加载弹窗

## 说明

全局加载状态弹窗，基于 `BaseDialog` 实现，展示旋转 loading 图标和提示文字。支持 timeout 自动关闭。

## 属性

| 属性 | 说明 | 类型 | 默认值 | 必填 |
|------|------|------|--------|------|
| **visible** | 是否显示 | `boolean` | `false` | 否 |
| **message** | 提示文字 | `string` | `''` | 否 |
| **cancelable** | 是否可点击蒙层关闭 | `boolean` | `false` | 否 |
| **timeout** | 自动关闭时间（ms），不传则不自动关闭 | `number` | - | 否 |
| **minDuration** | timeout 下限（ms） | `number` | `1000` | 否 |
| **maxDuration** | timeout 上限（ms） | `number` | `10000` | 否 |
| **onModalShow** | 弹窗显示回调 | `() => void` | - | 否 |
| **onModalHide** | 弹窗隐藏回调 | `() => void` | - | 否 |
| **onDismiss** | timeout 触发关闭回调 | `() => void` | - | 否 |
| **hasShade** | 是否显示遮罩 | `boolean` | `true` | 否 |

## 使用示例

```tsx
import { LoadingToast } from 'mhui-rn';

// 基本用法
<LoadingToast visible={loading} message="加载中..." />

// 带 timeout 自动关闭
<LoadingToast
  visible={loading}
  message="请稍候..."
  timeout={5000}
  onDismiss={() => setLoading(false)}
/>
```

## 注意事项

- `timeout` 会被 clamp 到 `[minDuration, maxDuration]` 区间
- 通过外部 `visible` 控制显隐，组件本身不维护状态
