前端知识 | 富文本编辑器 React-draft-wysiwyg

富文本编辑器:

富文本编辑器是一种可内嵌于浏览器的文本编辑器,富文本编辑器又不同于普通文本编辑器,程序员可到网上下载免费的富文本编辑器内嵌于自己的网站或程序里(当然付费的功能会更强大些),方便用户编辑文章或信息。

React-draft-wysiwyg 的简单使用:

这是一个基于 ReactJS 和 DraftJS 的一种富文本组件,想使用首先我们需要安装依赖,我们可以使用 nodejs 中的 npm 或者 yarn 来安装:


1.    npm install -Sreact-draft-wysiwyg

2.    yarn addreact-draft-wysiwyg


接下来你还需安装的包和对应版本:


1. draft-js:0.10.x

2. immutable:3.x, 4.x


最后我们就可以来简单的使用这个组件


import React, {Component } from 'react';

import { Editor } from'react-draft-wysiwyg';

import '../node_modules/react-draft-wysiwyg/dist/react-draft-wysiwyg.css';


const EditorComponent= () =>

React-draft-wysiwyg 的样式设计:

默认情况下编辑器将使用 DraftJS 编辑器,因为它没有任何样式,它将占用100%宽度的容器。可以通过组件自带的类或样式对象来改变富文本编辑器的样式。


1.wrapperClassName:类应用于编辑器和工具栏上

2.editorClassName: 类应用于编辑器的周围

3.toolbarClassName: 类应用于工具栏中的

4.wrapperStyle:样式对象在编辑器和工具栏上应用

5.editorStyle: 样式对象在编辑器中应用

6.toolbarStyle: 样式对象在工具栏上应用

React-draft-wysiwyg 中的 state:

编辑器可以实现为受控组件,可实现非受控构件的自动生成。

1.defaultEditorState:属性在创建编辑器状态时初始化一次,可用来改变EditorState。

2.EditorState:以受控方式更新编辑器状态的属性。

3.onEditorStateChange:每当编辑器的状态发生变化时都会调用函数,可用来改变 EditorState。

4.defaultContentState:属性在创建编辑器状态时初始化一次。

5.contentState:以受控方式更新编辑器状态的属性。

6.onChange:每当编辑器的状态发生变化时都调用函数。

7.onContentStateChange:每当编辑器文本框内容的状态发生变化时都会调用函数,可用来改变 contentState。

代码示例:

class ControlledEditor extends Component {

  constructor(props) {

    super(props);

    this.state = {

      editorState:EditorState.createEmpty(), //用来清空编辑器中的内容

    };

  }


  onEditorStateChange:Function = (editorState) => {

    this.setState({

      editorState,

    });

  };


  render() {

    const { editorState} = this.state;

    return (


       editorState={editorState}

        editorClassName="editor-class"

toolbarStyle="tool-style"       

onEditorStateChange={this.onEditorStateChange}//每次改变编辑器中的内容时都调用这个函数来把参数传入 editorState

      />

    )

  }

}

获取 React-draft-wysiwyg 文本框中的值:

我们可以从上面介绍的 contentState 中获取到文本框的内容,下面我们来看下获取到的 json 值的格式:

{"entityMap":{},"blocks":[{"key":"637gr","text":"Initializedfromontentstate.","type":"unstyled","depth":0,"inlineStyleRanges":[],"entityRanges":[],"data":{}}]};

内容主要是存在了 blocks 中其中的 text 就是你在文本框输入的内容,后面的 type 传的是你是否改变了原文本格式,如有改变后面会给出文本框样式的改变。接下来就可以简单的来使用富文本编辑器 react-draft-wysiwyg。

React-draft-wysiwyg在网站中的应用:

实际应用 React-draft-wysiwyg 的过程中,我们不仅需要获取 React-draft-wysiwyg 中的值,我们还需要把这个值上传到服务器,而它本身是 json 格式的值,我们需要序列化之后再上传到服务器,这样可以方便以后从服务器接收数据。

序列化代码如下:

JSON.stringify(contentState)

其中 contentState 就是在上文中提到的文本输入框的状态。

从服务器中接收到数据后,我们需要再把数据反序列化在把数据转化回来,在显示到文本框中。

反序列化代码如下:

this.setState({

contentState:JSON.parse(服务器数据)

 })

先把服务器数据反序列化之后,再把数据从新传回 contentState,这样从服务器返回的数据就被加载到文本框中了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,366评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,521评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,689评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,925评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,942评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,727评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,447评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,349评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,820评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,990评论 3 337
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,127评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,812评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,471评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,017评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,142评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,388评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,066评论 2 355