我正在使用draft.js
进行桌面支持(一级深度)的黑客攻击我有一个要求:所有现有的编辑器功能也需要在此表中使用
我向您提出三个选择,请选择一个并解释您为何这样做:
答案 0 :(得分:0)
我在每个单元格中使用嵌套编辑器(选项1 )。在每个单元格内实现样式功能要容易得多。您可以使用已经在“主要”中使用的功能。编辑器。
我的表实现中有两个主要组件。 Table
组件,自定义块组件。在该组件的每个单元格内部是Subeditor
(嵌套的编辑器组件)。每个Subeditor
的EditorState存储在Redux存储中。
编辑之间的选择处理非常少。
答案 1 :(得分:0)
我仅使用主编辑器和自定义TableCell
块组件以及ReactDOM.createPortal处理草稿js中的表。
每个TableCell组件只是一个普通的EditorBlock。
但是,我将重新创建表结构所需的基本信息存储在表的第一个块/单元的元数据中:例如,表样式和指定元素类型的二维对象数组( <td>
或<th>
)和每个单元格的块级样式。
渲染第一个块时,我渲染了包裹在表的完整DOM结构中的EditorBlock组件。除了第一个单元格以外的所有其他<th>
/ <td>
标签都是空的,但是具有对应于它们在表中位置的数据属性。
TableCell
块渲染到表中的正确位置。据draft-js所知,它只是以通常的线性方式渲染块。这使得编辑,管理选择状态以及html的导入/导出比其他任何块类型都简单。