@danielivanov/mention

中文文档
0.2.1发布于 2026/09/12MITTypeScriptESM + CJS构建来源已验证近 30 天下载 1.5万

无头反应提及文本区和编辑器集成的建议.

中文使用文档

@danielivanov/评论

无头反应提及本地文本区和编辑器集成的建议. 多个触发器,ASync搜索,键盘导航,caret定位,以及可选样式. 需要反应19.

bun add @danielivanov/mention@^0.2.1
import { Mention } from "@danielivanov/mention";
import "@danielivanov/mention/styles.css";

type Person = { id: string; name: string };
const people: Person[] = [{ id: "alice", name: "Alice" }];

export function Composer() {
  return (
    <Mention.Root items={people} getKey={p => p.id} getLabel={p => p.name}>
      <Mention.Input aria-label="Message" name="message" />
      <Mention.Popover aria-label="People">
        <Mention.Loading>Searching…</Mention.Loading>
        <Mention.List<Person>>
          {person => <Mention.Item value={person}>{person.name}</Mention.Item>}
        </Mention.List>
        <Mention.Empty>No people found</Mention.Empty>
      </Mention.Popover>
    </Mention.Root>
  );
}

使用标准 value, (中文(简体) ), onChange, (中文(简体) ), onBlur, (中文(简体) ), onKeyDown,以及 ref 打开道具 Mention.Input。消费者钥匙处理器首先运行,可以防止《参考》的处理. onSelect root是成功插入后的可选通知。 独立 useMention() 钩子登记文本区域时 getInputProps() 被传播.

对于多个触发器, 供应 triggers={{ "@": peopleConfig, "#": channelConfig }} 转到根或使用 useMentionMulti()。每个频道都有 items, (中文(简体) ), getKey, (中文(简体) ), getLabel选择 getInsertText。同步获取器接收 (query, signal); 请求默认取消150 ms. 无法选择过时的结果 .

丰富的编辑器注册 EditorAdapter<T> 与 setEditor()。适配器读取一个文本区域,测量护身符,并使用编辑器自己的交易替换一个范围。 编辑器拥有芯片,格式化,剪贴板数据并撤销. 见可执行文件 表达器 财务报告和审定财务报表 语法 实例,由浏览器测试进行。 其他编辑器集成需要自己的适配器和校验.

文本区保留其本土文本框语义. 丰富的编辑器提供自己的文本框角色和多行状态; 引用添加列表框和活性-选项关系. 自动检查不能证明辅助技术兼容性。 见 无障碍文档 用于测试边界.

运行 bun run build, (中文(简体) ), bun run test,以及 bun run test:e2e 从寄存器根。 规模预算为14 kB gziped,包括Floating UI. 编辑器实例位于已发布的运行时间之外.

名称匹配

默认情况下,空格会结束查询,而数组会使用对大小写不敏感的标签子字符串匹配. 设定 allowSpaces 每个频道的全名,并提供纯度 filter(item, query) 用于本地重音折叠或应用程序专用规则。 Async 获取器结果绕过此过滤器 。 标签,换行,编辑原子总是结束查询. 见 国际投入。 。 。 .

版本与发布记录

@danielivanov/mention 共发布 3 个版本,首次发布于 2026/05/04;过去 12 个月发布了 3 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
0.2.1latest2026/09/121 个月前
0.2.02026/09/072 个月前
0.1.02026/05/046 个月前

关于 @danielivanov/mention 的常见问题

@danielivanov/mention 是什么?

无头反应提及文本区和编辑器集成的建议.

如何安装 @danielivanov/mention?

在项目目录运行 npm install @danielivanov/mention,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:react(^19.0.0)、react-dom(^19.0.0)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@danielivanov/mention 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@danielivanov/mention 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

@danielivanov/mention 可以商用吗?

@danielivanov/mention 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@danielivanov/mention 的下载量有多少?

根据 npm 官方下载统计,@danielivanov/mention 在 2026/10/11 – 2026/11/09 这 30 天内被下载 15,114 次,日均约 504 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@danielivanov/mention 还在维护吗?

最新版本 0.2.1 发布于 2026/09/12(1 个月前);至今共发布 3 个版本,其中过去 12 个月发布了 3 个;首次发布于 2026/05/04。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。