【问题标题】:Draft JS linkify/mentions plugin on convertToRaw removes anchor tagconvertToRaw 上的 Draft JS linkify/mentions 插件删除了锚标记
【发布时间】:2021-07-06 16:58:30
【问题描述】:

我正在使用草稿 js 编辑器及其链接和提及插件。 在编辑器上添加链接和使用链接的提及可以正常工作,但是当我尝试获取 html 时,锚标记会从内容中删除。

我的编辑器渲染

return (
    <div
      className={editorStyles.editor}
      style={{ height: '150px', padding: '10px' }}
      onClick={() => {
        ref.current.focus();
      }}>
      <Editor
        editorKey={'editor'}
        editorState={editorState}
        onChange={onChange}
        plugins={plugins}
        placeholder={"What's on your mind"}
        ref={ref}
      />
      <MentionSuggestions
        open={open}
        onOpenChange={onOpenChange}
        suggestions={mentions}
        onSearchChange={onSearchChange}
        onAddMention={(e) => {
         
        }}
      />
    </div>
  );

这就是我尝试获取 HTML 的方式

draftToHtml(convertToRaw(_editorState.getCurrentContent()));

如果编辑器有一个链接,比如 google.com,上面的代码会返回纯文本而不是锚标记,尽管它会在编辑器中显示锚标记。与提及相同,我正在添加提及的链接,但锚标记也被删除。 如果我复制粘贴链接说Wikipedia,则不会删除此锚标记。

如何使用链接和提及的锚标记获取这些 html?需要帮忙。我在这里不是专业人士。

编辑 1: 我进一步检查并发现

  1. convertToRaw 上的 Linkify 以纯文本形式返回
  2. Mentions 适用于 convertToRaw,但 DraftToHtml 在此处无法正常工作,因为它不受支持。

我将不得不处理原始数据以达到必要的结果。

【问题讨论】:

    标签: draftjs draft-js-plugins


    【解决方案1】:

    呈现的链接是提及/链接组件的一部分,而不是文本的一部分。这就是导出中缺少它的原因。

    如果您想在draftToHtml 的输出中包含链接,您需要使用customEntityTransform 参数。

    来自documentation

    customEntityTransform 可用于将自定义实体块转换为 html。如果出现它为实体生成 html 的调用。它可以带2个参数:

    • entity(具有 { type, mutalibity, data} 的对象)
    • text 块中的文本。

    【讨论】:

      猜你喜欢
      • 2017-03-08
      • 2019-03-13
      • 2020-08-14
      • 1970-01-01
      • 2011-10-08
      • 2019-12-13
      • 1970-01-01
      • 2013-12-10
      • 2022-06-30
      相关资源
      最近更新 更多