You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Draft.js编辑器连续输入高亮词时内容异常问题求助

解决Draft.js连续输入相同高亮词汇时的临时内容追加Bug

问题描述

基于Draft.js开发实时高亮编辑器时,遇到如下异常场景:当连续输入以单个空格分隔的相同高亮词汇(示例中为"doe"),高亮子串会在一次状态更新中被错误追加到编辑器原有内容末尾,不过下一次状态更新后内容会自动恢复正常。

解决方案

在findWithRegex()方法中,调整匹配范围的end值,不要直接设为子串的精确长度,而是在其基础上±1。比如将:

end = start + matchArr[0].length;

修改为:

end = start + matchArr[0].length + 1; // 或减1,视场景调整

问题根源分析

这个Bug的核心原因在于,当end被设置为匹配子串的精确长度时,在连续输入相同高亮词汇加空格的场景下,Draft.js的内容状态更新与正则匹配的边界处理出现了同步偏差,导致编辑器临时错误地将匹配的高亮子串追加到内容末尾。通过给end增加或减少1个字符的偏移量,修正了匹配范围的边界,避免了状态更新时的内容异常。

内容的提问来源于stack exchange,提问作者Owen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 22:35:25