rc-editor-mention 使用教程

阅读时长 5 分钟读完

前言

在 Web 开发中,我们常常需要实现一些能够 @ 提及他人的功能,如社交网站上的评论回复、电商平台上的产品评价等等。为了方便实现,大多数前端框架都会有相应的插件来实现这个功能,而 rc-editor-mention 就是其中之一。

rc-editor-mention 是一个基于 React 的 @ 提及组件。它可以很方便地与富文本框 editor(如 antd 的 RichText)集成,提供了实时匹配和下拉选择的功能。

在本篇文章中,我们将介绍如何使用 rc-editor-mention,并且详细讲解如何基于它实现一个 @ 提及功能。

安装

使用 npm 安装 rc-editor-mention:

快速启动

使用 rc-editor-mention 的最简单的方法是直接使用其自带的默认配置进行启动。

-- -------------------- ---- -------
------ ----- ---- --------
------ -------- ---- ------------
------ - ------- - ---- --------------------

----- - --------------- ---------------- - - --------

----- --- ------- --------------- -
  ------------------ -
    -------------

    ---------- - -
      ------------ ------------------------------------
    --

    ----------------- - -----------------------------
  -

  ------------------------- -
    --------------- ----------- ---
  -

  -------- -
    ------ -
      --------
        ----------------------------
        ------------------- ----- ------
        ----------------------
        ----------
        ------------------------------
      --
    --
  -
-

-------------------- --- --------------------------------

使用上述代码即可在浏览器上启动 rc-editor-mention,默认会在富文本编辑器内提示用户输入 @XXX。

实现 @ 提及功能

在上述代码中,我们已经能看到 rc-editor-mention 的基本使用方法。下面我们将演示如何基于 rc-editor-mention 实现一个能够 @ 提及他人的功能。

具体而言,我们需要完成以下两个步骤:

  • 获取用户输入的已选项,也就是输入框内的 @ 提及信息。
  • 将已选项存储到后端数据库中,以便后续查询和展示。

下面我们一步一步地来实现。

获取用户输入的已选项

rc-editor-mention 提供了 onChange 事件,在富文本编辑器内输入内容时会触发该事件。onChange 事件的参数 editorState 包含了当前 editor 中的所有内容,我们可以从中提取出已选项。具体代码如下:

上述代码首先使用 fromContentState 方法将当前的 editorState 转化为普通的文本格式。然后,针对每个 mention 类型的实体,我们使用 map 方法将它们的 mention 信息单独抽离出来,最终得到 selections 数组。

储存已选项到后端数据库

储存已选项到后端数据库需要后端支持相应的 API。简单起见,我们这里假设已有一个 /api/mention 接口,用于存储 @ 提及信息。

在前端,我们可以在提交表单时将已选项一并发送给后端,后端再将其存储到数据库中。具体代码如下:

-- -------------------- ---- -------
----- ------------------- -
  -----------------------
  ----- ---------- - ---------------------
  ----- --------------------- -
    ------- -------
    ----- ---------------- ---------- ---
    -------- -
      --------------- -------------------
    --
  ---
-

上述代码中,我们使用 fetch 方法向后端发送请求。其中,POST 请求需要指定 method 为 'POST',请求头 Content-Type 为 'application/json',请求体为包含 selections 信息的 JSON 数据。可以看出,使用 rc-editor-mention 实现 @ 提及功能并不复杂,核心的代码也只有几行罢了。

总结

rc-editor-mention 是一个实现 @ 提及功能的优秀 React 组件。在文章中,我们介绍了它的基本用法,并演示了如何基于它实现一个 @ 提及功能。希望本文对读者有所帮助。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/162812