react-multi-email
是一个 React 组件,用于实现 多邮箱输入框 的功能,允许用户在一个输入框中输入多个邮箱地址,支持自动分隔邮箱、输入验证以及删除功能。这个组件通常用于类似 收件人输入框(例如 Gmail 或邮件系统中的“收件人”字段)等场景,可以提升用户输入多个邮箱的体验。
多邮箱输入
自动验证
删除功能
自定义分隔符
键盘支持
可定制化样式和行为
props
定制样式、验证规则和其他行为npm install react-multi-email
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
用于自定义验证规则,这里使用简单的正则表达式进行邮箱格式验证
属性 | 类型 | 说明 |
---|---|---|
value |
string[] | 当前输入的邮箱地址数组 |
onChange |
function | 监听邮箱列表变化,参数为新邮箱地址数组 |
maxLength |
number | 限制邮箱数量,超出后无法输入更多邮箱 |
validateEmail |
function | 自定义邮箱验证规则,返回 true 或 false |
onAddEmail |
function | 每次添加新邮箱时触发的回调 |
onDeleteEmail |
function | 每次删除邮箱时触发的回调 |
placeholder |
string | 输入框的占位符 |
disableDelete |
boolean | 是否禁用删除功能 |
inputProps |
object | 传递给输入框的其他 props |
inputStyle |
object | 输入框的自定义样式 |
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;
收件人输入框
表单中输入多个邮箱
社交平台用户标签
营销邮件系统
优点:
缺点:
react-multi-email
是一个 多邮箱输入组件,提供了易用的接口来实现邮箱的批量输入、验证和删除,适用于 邮件系统、社交平台、用户管理 等场景。它通过自动验证、动态显示 和 删除功能 提升了用户体验。