draft 学习笔记

Author Avatar
Teeeemoji 10月 17, 2017
  • 在其它设备中阅读本文章

draft 学习笔记

draft.js 是 facebook 的一个基于 react 的 编辑器 类库.它强于一般的 编辑器/富文本编辑器 插件或组件.

  • draft.js 提供的数据结构&工具方法, 可以非常快速方便得在 draft.js 上层构建一个功能完善的富文本编辑器.

因此 draft.js 不是普通的富文本编辑器, 他是构成富文本编辑器基础设施

背景

hcm 项目中需要使用到富文本编辑器, 用于编辑一个邮件模板.

邮件模板中就会存在变量, 通常是用特殊符号包裹起来的一小块, 如我做的项目中的 ${variable} ,用 ${}包裹起来.

需求: 为了更清晰地看到整个模板中, 变量的位置, ${} 包裹起来的文本需要高亮显示.

由于之前使用的富文本编辑器 froala-react-wysiwyg 不能完美兼容 react, 并且实现这个需求的过程存在不少坑:

  • 性能问题: 每次输入都要正则匹配全部的内容 (这里已经通过动作延迟, 优化了部分性能)
  • undo/redo栈丢失: 正则匹配完, 并重新设置富文本编辑器内容, 会造成 undo/redo 栈丢失
  • 输入光标位置重置: 每次重置富文本编辑器内容, 都会丢失光标位置, 这一点是硬伤无法解决

因此, 从任何角度讲我都要寻找下一个, 更优秀的富文本编辑器.

基本介绍

大致了解 draft.js 并查看了一两个 demo, 我就已经发现, 使用 draft.js 要实现我上面描述的需求简直太简单了.

大致就如这个 myeditor demo 所示.

相关资料

最终, 我说的需求被砍掉了, PM 也不希望我现在就花时间进行优化.
所以, 我找到了解决方案, 但是没有时间和心力编写组件或者 demo.期待有时间提出优化吧.

This blog is under a CC BY-NC-SA 3.0 Unported License
本文链接:http://teeeemoji.xyz/2017/10/17/learn-draft/