0

我正在使用 DraftJS 编辑器在我的应用程序的基于 React 的网页中具有富文本功能。

我有以下要求:

当用户键入 # 键时,编辑器旁边会显示一个下拉列表,用户可以从中选择一个选项。根据他的选择,我想用一些 HTML 替换 #,例如图像。

我已经创建了用于在用户在编辑器中输入 # 字符后立即显示下拉列表的逻辑,但不明白如何用其他一些 HTML/文本替换该哈希字符。

我已经用谷歌搜索了如何做到这一点,但到目前为止还没有找到一个这样的精确例子。

有人可以对此进行指导,举个例子更好吗?

注意:我知道有一些 DraftJS 插件提供了提及功能,但我不想使用这些,而只是想使用我上面提到的内容替换的东西继续我自己的逻辑。

4

1 回答 1

1

Draftjs的replaceText静态方法Modifier应该可以完成您正在寻找的内容:https ://draftjs.org/docs/api-reference-modifier#replacetext

替换文本

replaceText( contentState: ContentState, rangeToReplace: SelectionState, text: string, inlineStyle?: DraftInlineStyle,
entityKey?: ?string): ContentState

将此 ContentState 的指定范围替换为提供的字符串,并将内联样式和实体键应用于整个插入的字符串。

示例:在 Facebook 上,当将 @abraham lincoln 替换为提及亚伯拉罕·林肯时,整个旧范围都是要替换的目标,并且提及实体应应用于插入的字符串。

如果您想直接添加 HTML 字符串,则无法在编辑器上执行此操作,您必须使用 Draftjs 实体和 blockRendererFn 的组合来将您创建的 Draftjs 实体呈现为 HTML/reactjs 组件。

于 2019-07-10T15:09:05.377 回答