react-multi-email介绍

半兽人 发表于: 2025-08-05   最后更新时间: 2025-08-05 09:46:01  
{{totalSubscript}} 订阅, 972 游览

react-multi-email 是一个 React 组件,用于实现 多邮箱输入框 的功能,允许用户在一个输入框中输入多个邮箱地址,支持自动分隔邮箱、输入验证以及删除功能。这个组件通常用于类似 收件人输入框(例如 Gmail 或邮件系统中的“收件人”字段)等场景,可以提升用户输入多个邮箱的体验。

1. 核心功能

  1. 多邮箱输入

    • 允许用户输入多个邮箱地址,并自动以逗号或空格等分隔符分隔
  2. 自动验证

    • 输入时自动验证每个邮箱地址的合法性
  3. 删除功能

    • 用户可以删除已输入的邮箱地址
  4. 自定义分隔符

    • 支持自定义邮箱分隔符,常见的是逗号、空格等
  5. 键盘支持

    • 支持键盘操作,如通过按下“Enter”键或“Tab”键添加邮箱
  6. 可定制化样式和行为

    • 通过 props 定制样式、验证规则和其他行为

2. 安装

npm install react-multi-email

3. 基本用法

import React, { useState } from "react";
import MultiEmailInput from "react-multi-email";
import "react-multi-email/style.css"; // 导入默认样式

function EmailInput() {
  const [emails, setEmails] = useState([]);

  const handleEmailChange = (newEmails) => {
    setEmails(newEmails);
  };

  return (
    <div>
      <MultiEmailInput
        value={emails}
        onChange={handleEmailChange}
        maxLength={5} // 最多允许输入5个邮箱
        validateEmail={(email) => /.+@.+\..+/.test(email)} // 自定义邮箱验证规则
      />
      <div>已输入的邮箱: {emails.join(", ")}</div>
    </div>
  );
}

export default EmailInput;

说明:

  • value 和 onChange 用于管理和更新输入的邮箱地址列表
  • maxLength 限制最多输入的邮箱数量
  • validateEmail 用于自定义验证规则,这里使用简单的正则表达式进行邮箱格式验证

4. 常用 Props

属性 类型 说明
value string[] 当前输入的邮箱地址数组
onChange function 监听邮箱列表变化,参数为新邮箱地址数组
maxLength number 限制邮箱数量,超出后无法输入更多邮箱
validateEmail function 自定义邮箱验证规则,返回 true 或 false
onAddEmail function 每次添加新邮箱时触发的回调
onDeleteEmail function 每次删除邮箱时触发的回调
placeholder string 输入框的占位符
disableDelete boolean 是否禁用删除功能
inputProps object 传递给输入框的其他 props
inputStyle object 输入框的自定义样式

5. 示例:邮件收件人输入框

import React, { useState } from "react";
import MultiEmailInput from "react-multi-email";
import "react-multi-email/style.css"; // 导入默认样式

function EmailForm() {
  const [emails, setEmails] = useState([]);

  const handleEmailChange = (newEmails) => {
    setEmails(newEmails);
  };

  return (
    <div style={{ width: 400 }}>
      <h3>输入收件人邮箱</h3>
      <MultiEmailInput
        value={emails}
        onChange={handleEmailChange}
        maxLength={10}
        validateEmail={(email) => /.+@.+\..+/.test(email)} // 通过正则验证邮箱格式
        placeholder="请输入邮箱(按回车分隔)"
        inputProps={{ style: { padding: "8px" } }}
      />
      <div>
        <h4>已输入的邮箱:</h4>
        <p>{emails.join(", ")}</p>
      </div>
    </div>
  );
}

export default EmailForm;

6. 应用场景

  1. 收件人输入框

    • 类似 Gmail 或 Outlook 等邮件系统中的收件人输入框,允许用户输入多个邮箱地址
  2. 表单中输入多个邮箱

    • 适用于邀请、注册等需要输入多个邮箱的表单
  3. 社交平台用户标签

    • 支持多个用户标记,类似输入多个联系人或社交账户
  4. 营销邮件系统

    • 适用于群发邮件的邮箱列表输入

7. 优缺点

优点:

  • 多邮箱输入:支持多个邮箱的输入和管理
  • 灵活性:自定义验证规则、样式、事件等
  • 用户友好:自动处理邮箱的添加与删除,提升用户体验
  • 可控性:支持受控组件方式,方便与其他状态管理结合

缺点:

  • 性能问题:在非常长的邮箱列表下可能会有一些性能问题
  • 自定义功能局限:对于一些复杂的邮箱管理(例如自动建议或批量操作)可能需要进一步扩展

8. 总结

react-multi-email 是一个 多邮箱输入组件,提供了易用的接口来实现邮箱的批量输入、验证和删除,适用于 邮件系统、社交平台、用户管理 等场景。它通过自动验证、动态显示 和 删除功能 提升了用户体验。

更新于 2025-08-05

查看React更多相关的文章或提一个关于React的问题,也可以与我们一起分享文章。