import { useState } from 'react'; import { MessageModal, messageService, MessageModalProvider } from '~/components/ui/MessageModal'; import type { MessageType } from '~/components/ui/MessageModal'; import { LinksFunction } from '@remix-run/node'; import messageModalStyles from '~/styles/components/message-modal.css?url'; export const links: LinksFunction = () => [ { rel: "stylesheet", href: messageModalStyles }, ]; export default function MessageModalExample() { const [isModalOpen, setIsModalOpen] = useState(false); const [modalType, setModalType] = useState('info'); const [modalTitle, setModalTitle] = useState(''); const [modalMessage, setModalMessage] = useState(''); const [withConfirm, setWithConfirm] = useState(false); const [autoClose, setAutoClose] = useState(false); // 打开普通模态框 const openModal = (type: MessageType, title: string, message: string) => { setModalType(type); setModalTitle(title); setModalMessage(message); setIsModalOpen(true); }; // 打开各类型的服务提示框 const showSuccessMessage = () => { messageService.success('操作成功完成!', { title: '成功提示', autoClose: true }); }; const showErrorMessage = () => { messageService.error('操作过程中发生错误,请重试。', { title: '错误提示' }); }; const showWarningMessage = () => { messageService.warning('此操作可能产生不可逆转的结果。', { title: '警告提示', onConfirm: () => { messageService.success('您已确认继续操作') }, confirmText: '继续操作', cancelText: '取消' }); }; const showInfoMessage = () => { messageService.info('系统将于今晚10点进行升级维护。', { title: '通知', autoClose: true, autoCloseDelay: 5000 }); }; const showCustomMessage = () => { messageService.show({ title: '自定义消息', message: '这是一个带有自定义内容的消息', type: 'info', confirmText: '了解', children: (

这里可以放置更复杂的自定义内容。

比如详细的操作说明或其他信息。
) }); }; // 处理确认 const handleConfirm = () => { messageService.success('您点击了确认按钮!', { autoClose: true }); setIsModalOpen(false); }; return (

消息模态框示例

基本用法

您可以直接使用MessageModal组件来控制模态框的显示和隐藏。

setIsModalOpen(false)} title={modalTitle} message={modalMessage} type={modalType} autoClose={autoClose} onConfirm={withConfirm ? handleConfirm : undefined} confirmText={withConfirm ? "确认" : "我知道了"} cancelText="取消" />

全局消息服务

使用messageService可以在任何组件中方便地显示消息提示,而无需手动管理状态。

); }