react draft api 简介

博弈论实践
• 阅读 3794

draft.js api
https://draftjs.org/docs/quic...

基础API

这个文档提供了一些基础的draftapi概览。

Controlled Input

Editor组件构建了一个可控的可编辑的组件。这个组件提供了一个顶级api模型与react的可控Input组件相似的api.
做一个简短的回顾,可控input组件包括两个关键:
1.一个value代表input的状态
2.一个onChange函数属性,使input更新。
这个方法允许组合input组件来严格控制Input的状态,于此同时仍然允许更新DOM来展示用户已经输入的信息。
顶级的组件能通过value属性的state值来保持控制输入状态。

Controlling Rich Text

在react富文本脚本中有两个显著的问题:
1.一段纯文本不足以展示富文本编辑器的复杂状态
2.在可编辑的元素总,没有像onChange的这样的事件可用。
State因此被表示为一个不可变的EditorState对象。并且onChangeEditor的内部代码实现来提供一个state的值给上层。
这个EditorState对象是一个复杂的Editor的 state的快照。包括内容,光标和撤消/重做历史记录。所有在编辑器内部对内容和选择的修改都会创建一个新的EditorState对象。请注意,由于不可变对象上的数据持续存在,这仍然是有效的。
对于在编辑器DOM中发生的任何编辑或选择更改,您的onChange处理程序将根据这些更改使用最新的EditorState对象执行。

Rich Styling

现在我们已经确定了基本的顶层api,我们可以进一步的思考怎么可以给Draft编辑器添加一些基本的样式。

EditorState: Yours to Command

以前的文章介绍了EditorState对象作为编辑器的完整状态的快照,由编辑器核心通过onChange支持提供。
然而,你的顶层的React组件是负责维护状态的,你还可以以任何你认为合适的方式将更改应用于该EditorState对象。
对于inlineblock样式,例如,RichUntils模块提供了一些可用的方法来帮助操作这些状态。
相似的,Modifier模块也提供了一些常见的操作来使你的编辑生效,包括对文本,样式的修改等等。这个模块是一系列由更小的,更简单的编辑函数组成的编辑函数来返回所需的EditorState对象。
对于这个例子,我们将坚持使用RichUtils来演示如何在顶级组件中应用基本的丰富样式。

RichUtils and Key Commands

RichUtils 有一些对于web编辑器来说可用的核心关键命令,例如: Cmd+B (加粗), Cmd+I (斜体), 等等.
我们可以观察并且处理关键命令通过我们可以通过handleKeyCommand prop来观察和处理关键命令,并将它们绑定到RichUtils中以应用或删除所需的样式。

handleKeyCommand
传给handleKeyCommandcommand参数是一个字符串值,即需要被运行命令的名字。这是从DOM键盘事件映射的。

Styling Controls in UI

在React组件中,你可以添加按钮或者其他的控制来允许用户在编辑器中修改文本样式。

点赞
收藏
评论区
推荐文章
blmius blmius
4年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
美凌格栋栋酱 美凌格栋栋酱
7个月前
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(
Stella981 Stella981
3年前
Opencv中Mat矩阵相乘——点乘、dot、mul运算详解
Opencv中Mat矩阵相乘——点乘、dot、mul运算详解2016年09月02日00:00:36 \牧野(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fme.csdn.net%2Fdcrmg) 阅读数:59593
Stella981 Stella981
3年前
C# Aspose.Cells导出xlsx格式Excel,打开文件报“Excel 已完成文件级验证和修复。此工作簿的某些部分可能已被修复或丢弃”
报错信息:最近打开下载的Excel,会报如下错误。(xls格式不受影响)!(https://oscimg.oschina.net/oscnet/2b6f0c8d7f97368d095d9f0c96bcb36d410.png)!(https://oscimg.oschina.net/oscnet/fe1a8000d00cec3c
Stella981 Stella981
3年前
Linux查看GPU信息和使用情况
1、Linux查看显卡信息:lspci|grepivga2、使用nvidiaGPU可以:lspci|grepinvidia!(https://oscimg.oschina.net/oscnet/36e7c7382fa9fe49068e7e5f8825bc67a17.png)前边的序号"00:0f.0"是显卡的代
Stella981 Stella981
3年前
KVM调整cpu和内存
一.修改kvm虚拟机的配置1、virsheditcentos7找到“memory”和“vcpu”标签,将<namecentos7</name<uuid2220a6d1a36a4fbb8523e078b3dfe795</uuid
Easter79 Easter79
3年前
Twitter的分布式自增ID算法snowflake (Java版)
概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Stella981 Stella981
3年前
Github标星5300+,专门为程序员开发文档开源管理系统,我粉了
!(https://oscimg.oschina.net/oscnet/a11909a041dac65b1a36b2ae8b9bcc5c432.jpg)码农那点事儿关注我们,一起学习进步!(https://oscimg.oschina.net/oscnet/f4cce1b7389cb00baaab228e455da78d0
Python进阶者 Python进阶者
1年前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这