当前位置:首页 > React

react 实现toast

2026-01-26 14:46:27React

实现 React Toast 通知组件

在 React 中实现 Toast 通知可以通过自定义组件或使用第三方库完成。以下是两种常见方法:

自定义 Toast 组件

react 实现toast

创建一个可复用的 Toast 组件,通过状态管理控制显示/隐藏:

import React, { useState, useEffect } from 'react';

const Toast = ({ message, duration = 3000, onClose }) => {
  const [visible, setVisible] = useState(true);

  useEffect(() => {
    const timer = setTimeout(() => {
      setVisible(false);
      onClose && onClose();
    }, duration);
    return () => clearTimeout(timer);
  }, [duration, onClose]);

  return visible ? (
    <div style={{
      position: 'fixed',
      bottom: '20px',
      right: '20px',
      padding: '12px 16px',
      background: '#333',
      color: 'white',
      borderRadius: '4px',
      boxShadow: '0 2px 10px rgba(0,0,0,0.1)',
      zIndex: 1000
    }}>
      {message}
    </div>
  ) : null;
};

// 使用示例
function App() {
  const [toasts, setToasts] = useState([]);

  const addToast = (message) => {
    const id = Date.now();
    setToasts([...toasts, { id, message }]);
  };

  const removeToast = (id) => {
    setToasts(toasts.filter(toast => toast.id !== id));
  };

  return (
    <div>
      <button onClick={() => addToast('This is a toast message!')}>
        Show Toast
      </button>
      {toasts.map(toast => (
        <Toast
          key={toast.id}
          message={toast.message}
          onClose={() => removeToast(toast.id)}
        />
      ))}
    </div>
  );
}

使用第三方库

react 实现toast

流行的 React Toast 库提供更多功能和自定义选项:

  1. react-toastify (推荐)
    npm install react-toastify
import { ToastContainer, toast } from 'react-toastify';
import 'react-toastify/dist/ReactToastify.css';

function App() {
  const showToast = () => {
    toast.success('Operation completed!', {
      position: "top-right",
      autoClose: 5000,
      hideProgressBar: false,
      closeOnClick: true,
      pauseOnHover: true,
      draggable: true,
    });
  };

  return (
    <div>
      <button onClick={showToast}>Show Toast</button>
      <ToastContainer />
    </div>
  );
}
  1. sonner (轻量级替代方案)
    npm install sonner
import { Toaster, toast } from 'sonner';

function App() {
  return (
    <div>
      <button onClick={() => toast('My first toast')}>
        Show Toast
      </button>
      <Toaster position="top-center" richColors />
    </div>
  );
}

关键实现要点

  • 定位通常使用 fixed 或 absolute 定位在屏幕角落
  • 自动消失功能通过 setTimeout 实现
  • 多个 Toast 需要队列管理避免重叠
  • 支持不同类型的通知(成功/错误/警告)
  • 添加动画效果提升用户体验

第三方库通常提供更完善的解决方案,包括动画、队列管理、主题定制等功能,推荐在正式项目中使用。自定义组件适合简单需求或学习目的。

标签: reacttoast
分享给朋友:

相关文章

react如何鉴定

react如何鉴定

React 鉴权方法 基于路由的鉴权 在 React 中,可以通过封装路由组件实现鉴权。使用 react-router-dom 检查用户是否登录,未登录则跳转至登录页。 import { Ro…

react实现vue

react实现vue

React 实现 Vue 功能 React 和 Vue 是两种不同的前端框架,但可以通过一些方法在 React 中实现 Vue 的特性。以下是几种常见 Vue 功能在 React 中的实现方式: 双…

如何生成react代码

如何生成react代码

使用 Create React App 生成项目 安装 Node.js 后,通过命令行工具运行以下命令创建新项目: npx create-react-app my-app cd my-app np…

如何优化react

如何优化react

优化 React 性能的方法 使用 React.memo 或 PureComponent 对于函数组件,使用 React.memo 进行记忆化,避免不必要的重新渲染。类组件可以使用 PureCompo…

如何记忆react

如何记忆react

理解核心概念 React的核心概念包括组件、状态(state)、属性(props)、生命周期方法(类组件)和钩子(函数组件)。掌握这些基础概念是记忆React的关键。组件是React应用的构建块,分为…

react如何部署

react如何部署

部署 React 应用的常见方法 使用静态服务器部署 React 应用在构建后会生成静态文件,可以直接通过静态服务器部署。常用的静态服务器包括 Nginx、Apache 等。 运行构建命令生成静态文…