Skip to content

Sonner 消息提示 ​

Sonner 组件是一个轻量级的消息提示组件,支持多种类型的提示(成功、错误、警告、信息),可以自定义位置、内容和样式,适用于各种交互反馈场景。

基础用法 ​

Sonner 组件提供了多种使用方式,包括组件实例方法调用、全局 $toast 方法调用、组合式 API useToast() 以及直接导入的全局 toast 对象。

通过插件方法调用

自定义配置

操作方法

实际应用场景

不同类型的消息 ​

Sonner 支持四种预设的消息类型:成功(success)、错误(error)、警告(warning)和信息(info),每种类型都有对应的图标和颜色。

Sonner 消息提示 - 不同类型

Sonner 提供多种消息类型和丰富的自定义选项,满足不同场景下的需求。点击下方按钮查看效果。

基本消息类型

每种类型的消息都有对应的图标和默认样式,可以根据场景选择合适的类型。

自定义样式

通过自定义选项可以控制消息的外观,包括大小、颜色等属性。

交互式消息

交互式消息可以包含操作按钮、链接等元素,提供更丰富的用户体验。

高级应用场景

结合不同功能,可以实现更复杂的交互场景。

自定义位置 ​

可以通过设置 position 属性来改变消息提示的位置,支持多种位置选项。

Sonner 消息提示 - 自定义位置

Sonner 支持在屏幕的不同位置显示消息提示,可以根据应用场景选择合适的位置。

基本位置选项

点击按钮查看不同位置的消息效果,每个位置使用独立的 Sonner 实例。

位置组合演示

同时在所有位置显示不同类型的消息,展示多实例协同工作效果。

实时位置切换

top-right

选择位置后显示消息,可以直观比较不同位置的显示效果。

偏移量控制

偏移量:16px

调整消息距离屏幕边缘的偏移量,适用于需要避开其他固定元素的场景。

高级位置应用

结合实际业务场景,展示不同位置的应用策略。

简单调用方式 ​

Sonner 消息提示 - 简单调用方式

Sonner 提供了更简洁的调用方式,包括组合式 API 和全局 toast 对象,让消息提示更加便捷易用。

使用组合式 API (useToast)

通过 useToast() 组合式 API 获取 toast 实例,然后调用相应的方法显示不同类型的消息。

使用全局 toast 对象

直接导入全局 toast 对象并调用其方法,适合在任何地方快速显示消息。

高级用法对比

对比不同调用方式的效果,包括详细配置选项的使用。

实际应用场景

在实际业务场景中使用不同的调用方式处理交互反馈。

自定义内容 ​

除了基本的标题和描述,Sonner 还支持通过插槽自定义内容,以及设置各种样式选项。

Sonner Props ​

属性名类型默认值说明
positionstring'top-right'消息提示的位置,可选值:'top-right'、'top-left'、'bottom-right'、'bottom-left'、'top-center'、'bottom-center'
rtlbooleanfalse是否使用 RTL 布局
limitnumber3同时显示的最大消息数量
offsetnumber16消息提示框与屏幕边缘的偏移量
pauseOnHoverbooleantrue鼠标悬停时是否暂停自动关闭计时器
containerStyleRecord<string, string>{}容器的自定义样式

Toast 选项 ​

使用 $toast.addToast() 方法时,可以传递以下选项:

选项名类型默认值说明
typestring'default'消息类型,可选值:'default'、'success'、'error'、'warning'、'info'
titlestring-消息标题
descriptionstring-消息描述
durationnumber5000消息显示的持续时间(毫秒),设置为 Infinity 可禁用自动关闭
dismissiblebooleantrue是否显示关闭按钮
iconstring-自定义图标名称
styleRecord<string, string>{}自定义样式
sizestring'default'消息大小,可选值:'small'、'default'、'large'
roundedbooleanfalse是否使用圆角样式
shadowbooleanfalse是否使用阴影效果
slotstring-自定义内容插槽名称

方法 ​

Sonner 组件和 $toast 提供以下方法:

方法名参数返回值说明
addToastoptions: Omit<Toast, 'id'>number添加一个自定义消息,返回消息 ID
dismissToastid: numbervoid关闭指定 ID 的消息
dismissAll-void关闭所有消息
updateToastid: number, updates: Partial<Toast>void更新指定 ID 的消息
successmessage: string, title?: stringnumber显示成功消息
errormessage: string, title?: stringnumber显示错误消息
warningmessage: string, title?: stringnumber显示警告消息
infomessage: string, title?: stringnumber显示信息消息

安装和配置 ​

在应用的入口文件中,通常是 main.js 或 main.ts,你需要导入并使用 Sonner 组件:

javascript
import { createApp } from 'vue';
import App from './App.vue';
import Zui from './install';

const app = createApp(App);
app.use(Zui);
app.mount('#app');

然后在 App.vue 中添加 Sonner 组件:

vue
<template>
  <div class="app">
    <Sonner />
    <!-- 其他组件 -->
  </div>
</template>

访问方式 ​

在 Vue 组件中,你可以通过以下方式访问 Sonner:

  1. 通过 this.$toast(在选项 API 中)
  2. 通过 inject('toast')(在组合 API 中)
  3. 通过直接导入的 useToast() 组合式 API
  4. 通过直接导入的全局 toast 对象

使用组合式 API ​

vue
<template>
  <Button @click="showSuccessToast">显示成功消息</Button>
</template>

<script setup>
import { useToast } from '../src/components/Sonner';

const toast = useToast();

const showSuccessToast = () => {
  toast.success('操作成功', '提示');
};
</script>

使用全局 toast 对象 ​

vue
<template>
  <Button @click="showErrorToast">显示错误消息</Button>
</template>

<script setup>
import { toast } from '../src/components/Sonner';

const showErrorToast = () => {
  toast.error('操作失败', '错误');
};
</script>

响应式设计 ​

Sonner 组件会根据屏幕宽度自动调整位置和大小,在移动设备上会自动适应屏幕宽度。