nim*_*rod 5 javascript architecture reactjs draftjs
我正在使用draft.js 进行表格支持(一层深)的hack
我有一个要求:所有现有的编辑器功能也需要在这个表中工作
我给你三个选择,请选择一个并解释你这样做的原因:
我有一个针对 Draft-js 中的表格的解决方案,非常适合我们。我不会为每个单元格使用单独的编辑器,而只是使用主编辑器树中的常规编辑器块。这里有一个工作示例https://draft-js-rte-evanmorrison.netlify.app/和这里的存储库https://github.com/EvanMorrison/draft-js-rte
我有一个“TableCell”自定义块类型,主要仅渲染标准 EditorBlock,但使用 React.createPortal 渲染到适用的表格单元格中。
重新创建表结构所需的信息存储在表的第一个单元格的元数据中。
渲染第一个块时,我渲染其包含在表的完整 DOM 结构中的 EditorBlock 组件。除第一个单元格之外的所有单元格的<th>/<td>标记都是空的,但被赋予了与其在表中的位置相对应的数据属性。
然后,我在将每个后续 TableCell 块渲染到表中的正确位置时使用 ReactDOM.createPortal。
就 Draft-js 而言,它只是以通常的线性方式渲染块。这使得编辑、管理选择状态以及 html 的导入/导出在大多数情况下并不比任何其他块类型更困难。尽管您确实必须对跨入或跨出表格的选择和编辑采取预防措施。
我在每个单元格中使用嵌套编辑器(选项 1)。在每个单元格内实现样式功能要容易得多。您可以使用已在“主”编辑器中使用的功能。
我的表实现有两个主要组件。该Table组件,一个自定义块组件。该组件的每个单元格内部都是Subeditor(嵌套的编辑器组件)。每个的 EditorStateSubeditor都存储在 Redux 存储中。
不过,编辑器之间的选择处理相当少。
| 归档时间: |
|
| 查看次数: |
4972 次 |
| 最近记录: |