当前位置:首页 > 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 是一个用于构建用户界面的 JavaScript 库,以下是一些核心概念和使用方法。 安装 React 通过 create-react-app 快速搭建 Reac…

vue 实现toast

vue 实现toast

vue 实现 toast 的方法 在 Vue 中实现 Toast 提示功能可以通过多种方式完成,以下是几种常见的实现方法: 使用第三方库 Vue 生态中有许多成熟的 Toast 库,如 vue-to…

vue实现toast

vue实现toast

Vue 实现 Toast 提示 在 Vue 中实现 Toast 提示可以通过多种方式,以下介绍两种常见方法:使用第三方库和自定义组件。 使用第三方库(如 vue-toastification) vu…

如何下载react

如何下载react

下载 React 的方法 通过 npm 或 yarn 安装 React 可以通过包管理器 npm 或 yarn 安装。确保已安装 Node.js(包含 npm),然后在项目目录中运行以下命令:…

react如何衰减

react如何衰减

React 中的动画衰减效果实现 在 React 中实现衰减效果(如滚动衰减、拖动释放后的惯性滑动)通常需要结合物理动画原理或第三方动画库。以下是几种常见方法: 使用 CSS 动画和 @keyfra…

react如何拓展

react如何拓展

React 拓展方法 使用高阶组件(HOC) 高阶组件是一种复用组件逻辑的方式,通过接收一个组件并返回一个新组件实现功能拓展。例如,为组件添加日志功能: function withLogging…