# Message

全局消息提示，以函数式调用从页面顶部弹出，用于操作后的轻量反馈，支持多种类型和手动关闭。

## 适用场景

- 操作成功、失败、警告的轻量提示
- 异步操作的 loading 状态提示
- 需要手动关闭的持久消息提示
- 需要样式隔离的多 root 场景

## 典型用法

### 基础消息类型

```tsx
import {message} from '@befe/brick'

message.info('通知提示的文案')
message.success('成功提示的文案')
message.warning('警告提示的文案')
message.error('错误提示的文案')
message.loading('加载提示的文案')
```

### 手动关闭

```tsx
import {message, removeMessage, MessageObject} from '@befe/brick'

// duration: 0 表示不自动关闭
const msg = message.loading('加载提示的文案', {
    duration: 0,
    onClose: () => {
        currentMessage = undefined
    },
})

// 手动关闭方式一
removeMessage(msg.id)

// 手动关闭方式二
msg.remove()
```

### 样式隔离（createMessage）

> `message()` 在页面上另行取 root 进行 render，ConfigProvider 配置的值（如 wrapClassName）在不同 root 间不共享，需要用 `createMessage` 重新创建实例

```tsx
import {createMessage} from '@befe/brick'

const message = createMessage({
    wrapClassName: 'awesome-one',
})

message.info('通知提示的文案')
message.success('成功提示的文案')
```

## 注意事项

- `message()` 在页面上独立的 root 中 render，ConfigProvider 的非单例配置（如 `wrapClassName`）无法跨 root 传递
- 需要样式隔离方案时，使用 `createMessage({wrapClassName})` 重新创建 message 实例
- `duration: 0` 时消息不会自动关闭，需手动调用 `removeMessage(id)` 或 `msg.remove()`
- 类似的 API 还有 Notification 的 `createNotification()` 和 Dialog 的 `createConfirm()`、`createAlert()`
