NPM包hf-draft-js使用教程

阅读时长 8 分钟读完

简介

hf-draft-js是一个基于Draft.js封装的富文本编辑器,它提供了丰富的插件和主题,可以快速地实现一个富文本编辑器。本文将介绍hf-draft-js的基本用法、插件和主题的使用方法,以及如何自定义一个插件和主题。

安装

hf-draft-js可以通过npm安装:

基本用法

默认主题下的hf-draft-js的使用非常简单,只需要引入组件并传入value和onChange属性即可:

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

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

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

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

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

插件

在hf-draft-js中,插件是一组可以被应用的具有特定功能的组件。通过插件,我们可以为hf-draft-js添加除了默认编辑功能以外更多的功能。hf-draft-js目前内置了一些插件,同时也支持自定义插件。

使用内置插件

如何使用内置插件呢?通过在Editor组件中添加对应的plugin就可以使用了。以代码高亮插件为例:

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

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

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

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

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

自定义插件

如何定义自己的插件呢?hf-draft-js的插件其实就是一个react组件,通过传递EditorState和onChange方法来处理Editor的内容。以超链接插件为例:

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

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

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

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

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

这里新建了一个LinkPlugin组件,它接受onChange和editorState两个参数,通过window.prompt弹出url输入框,然后创建一个链接实体并调用EditorState的toggleLink方法来为当前选中位置添加或删除链接。需要将该组件注册为插件才能使用,可以在Editor组件中调用plugin属性来注册LinkPlugin。

主题

hf-draft-js主题可以控制编辑器的外观,使之更符合实际需求。hf-draft-js目前内置了一些主题,同时也支持自定义主题。

使用内置主题

内置主题是通过引入css来实现的。以绿色主题为例:

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

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

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

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

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

这里引入了base和green两个css文件,将Editor组件的theme属性设置为green即可使用绿色主题。

自定义主题

主题也可以自定义。可以通过hf-draft-js的ThemeProvider组件来实现。以黑色主题为例:

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

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

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

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

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

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

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

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

这里创建了一个新的主题blackTheme,覆盖了一些默认样式,并将blackTheme传递给ThemeProvider组件。Editor就可以在ThemeProvider的包围下加载出新样式的编辑器。

到这里,本次的hf-draft-js使用教程已经结束。期望对大家有所帮助。

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

纠错
反馈

纠错反馈