莫方教程网

专业程序员编程教程与实战案例分享

为何强烈推荐用 react-draft-wysiwyg 富文本编辑器?

大家好,很高兴又见面了,我是"高级前端?进阶?",由我带着大家一起关注前端前沿、深入前端底层技术,大家一起进步,也欢迎大家关注、点赞、收藏、转发,您的支持是我不断创作的动力。

什么是 react-draft-wysiwyg

A Wysiwyg editor build on top of ReactJS and DraftJS.

react-draft-wysiwyg 是使用 ReactJS 和 DraftJS 库构建的 Wysiwyg 编辑器,支持以下突出功能:

  • 可配置工具栏,带有添加 / 删除控件的选项,支持更改工具栏中控件顺序的选项
  • 向工具栏添加自定义控件,支持更改工具栏中样式和图标
  • 支持仅在编辑器聚焦时显示工具栏,支持内联样式,包括:粗体、斜体、下划线、删除线、代码、下标、上标
  • 支持块类型,包括:段落、H1 - H6、块引用、代码。
  • 支持设置字体大小和字体系列、支持有序 / 无序列表和缩进。
  • 支持文本对齐、文本或背景着色、国际化。
  • 支持添加 / 编辑链接、有超过 150 个表情符号可供选择。
  • 支持主题标签、添加 / 上传图像、对齐图像和设置高度和宽度。
  • 支持嵌入式链接,灵活设置高度和宽度、删除添加样式等
  • 撤消和重做、可配置 RTL 和拼写检查的行为、支持占位符。
  • 支持 WAI-ARIA 属性、支持受控或不受控的模式
  • 支持将编辑器内容转换为 HTML、JSON、Markdown。

目前 react-draft-wysiwyg 在 Github 通过 MIT 协议开源,有超过 6.4k 的 star、2k 的 fork、40k + 的项目依赖量、代码贡献者 70+、妥妥的前端优质开源项目。

如何使用 react-draft-wysiwyg

首先需要安装相应依赖:

npm install -S react-draft-wysiwyg
yarn add react-draft-wysiwyg

然后,编辑器可以简单地导入并用作 React 组件。但需要确保还包含来自 node_modules 的 react-draft-wysiwyg.css。

import React, {Component} from 'react';
import {Editor} from 'react-draft-wysiwyg';
import '../node_modules/react-draft-wysiwyg/dist/react-draft-wysiwyg.css';

const EditorComponent = () => <Editor />

开发者还可以使用 editorRef 属性获取底层 DraftJS 编辑器的引用,从而在焦点编辑器等编辑器上触发事件。

const setEditorReference = (ref) => {
  this.editorReferece = ref;
  ref.focus();
}

const EditorWithRef = () => (
  <Editor
    editorRef={setEditorReference}
  />
)

编辑器本身还支持 3 个事件回调属性:

  • onFocus:当编辑器聚焦时调用此回调。
  • onBlur:当编辑器失去焦点时调用此回调。
  • onTab:当编辑器收到 “tab” 键按下时调用此回调。
import React from 'react';
import {Editor} from 'react-draft-wysiwyg';


const EditorWithMentionHashtag = () => (
  <Editor
    wrapperClassName="demo-wrapper"
    // 应用于编辑器和工具栏的类
    editorClassName="demo-editor"
    // 围绕编辑器应用的类
    onFocus={(event) => {}}
    onBlur={(event, editorState) => {}}
    onTab={(event) => {}}
  />
)

更多关于 react-draft-wysiwyg 的用法和示例可以参考文末资料,本文不再过多展开。

参考资料

https://github.com/jpuri/react-draft-wysiwyg

https://jpuri.github.io/react-draft-wysiwyg/#/docs

https://www.youtube.com/watch?v=PDdZB83_Nrs

https://madewithreactjs.com/react-draft-wysiwyg

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言