微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 convertToRaw 上的 Draft JS linkify/mentions 插件删除了锚标记

如何解决在 convertToRaw 上的 Draft JS linkify/mentions 插件删除了锚标记

我正在使用草稿 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. 提及适用于 convertToRaw,但 DraftToHtml 在这里不起作用,因为它不受支持

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

解决方法

呈现的链接是mention/linkify 组件的一部分,而不是文本的一部分。这就是它在导出中丢失的原因。

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

documentation 开始:

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

  • entity(具有{类型、可变性、数据}的对象)
  • text 块中的文本。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。