npm 包 redux-draft 使用教程

阅读时长 10 分钟读完

redux-draft 是一个在 Redux 状态管理库中集成 Draft.js 富文本编辑器的 npm 包。它提供了一种方便的方式来管理应用程序中的富文本内容。在本文中,我们将探讨如何使用 redux-draft 构建富文本编辑器,并将其集成到 Redux Store 中。

安装依赖

首先,我们需要安装 redux-draft 和相关依赖:

创建 Store

我们将创建一个 Redux Store 来存储富文本内容。首先,我们需要导入 reducer 和 store 创建器,然后将它们用于创建 store。

这里,我们将 draftReducer 添加到了根 reducer 中,以便在 store 中存储富文本内容。

创建富文本编辑器

现在,我们可以开始创建富文本编辑器了。我们可以将编辑器放置在 React 组件中。首先,我们需要导入 Draft.js 的 CompositeDecorator 和 Editor 组件。

然后,我们可以创建一个 CompositeDecorator,并使用它来创建一个 draftState。CompositeDecorator 可以用于检测文本块中的关键字并应用样式。在本例中,它将检测所有的 @mentions,并为其应用 'mention' 样式。

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

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

  ------ ------------------------------------------- ------------------
--
展开代码

在上面的示例中,我们使用 ContentState 将文本内容转换为 EditorState。接下来,我们将使用 draftState 来渲染编辑器,以便用户可以开始编写富文本内容。

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

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

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

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

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

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

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

    ------ -
      ---- ------------------------
        -------
          --------------------
          ------------------------
          ------------------------------
          ---------------------
        --
      ------
    --
  -
-
展开代码

在上面的示例中,我们创建了一个 RichTextEditor 组件,它包含一个点击时聚焦的

元素和一个编辑器组件。我们向编辑器组件传递了 draftState 和 onChange 回调,以便与 Redux Store 集成。

将富文本编辑器集成到 Store

现在,我们可以将富文本编辑器集成到 Redux Store 中了。我们需要使用 react-redux 提供的 connect() 方法将 editorState 和 onChange 回调映射到我们的 store。

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

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

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

------ ------- ------------------------ ------------------------------------
展开代码

在上面的示例中,我们需要一个 SET_EDITOR_STATE 的 action,以便在 reducer 中更新编辑器状态。reducer 可以根据这个 action 中新增加的 editorState 值来更新 store。

创建 reducer

最后,我们需要创建一个 reducer,以便根据 action 更新 store 中的 editorState 值。

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

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

------ - ------------ --
展开代码

在上面的示例中,我们定义了一个 initialState,以及一个 SET_EDITOR_STATE 类型的 action,并根据这个 action 更新了 store 中的 editorState 值。

示例代码

完整的示例代码如下:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

----- ----------- - --------------------------------
-------------------- --- -------------
展开代码

结论

在这篇文章中,我们学习了如何使用 redux-draft 包集成 Draft.js 富文本编辑器到 Redux。我们了解了如何创建富文本编辑器组件、将其集成到 Redux Store,以及创建 reducer 以更新 store 值。希望这个教程可以帮助您更好地创建富文本编辑器,提高开发效率。

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

纠错
反馈

纠错反馈