ProseMirror:从 '.toDOM' 返回 DOM 节点时使用 "holes" /contentDOM



在ProseMirror中,模式的.toDOM方法通常返回一个嵌套数组,该数组描述如何将节点呈现为DOM,类似于"虚拟dom"数据结构。此数据结构还可以包含 ProseMirror 所谓的"孔",由0表示。此孔是 ProseMirror 将插入节点内容(例如文本或其他节点(的地方。

但是.toDOM也可以返回字符串或 DOM 节点,它们只是按原样使用。

即使toDOM返回 DOM 节点,是否可以定义漏洞?我是否需要实现一个自定义DOMSerializer,它似乎负责获取.toDOM返回值并生成{dom, contentDom?}对象。如果是这样,我将如何使用它?

即使 toDOM 返回一个 DOM 节点,是否可以定义孔?

不。仅当给定 ProseMirror 节点的 DOM 表示中有多个子 DOM 元素时,定义一个孔才有意义。定义一个孔会告诉 PM 在哪里插入下一个子 PM 节点。

考虑以下示例:

imageAlt: {
toDOM: () => ['div', ['h2', 'Alt'], ['div', 0]],
content: 'inline*',
defining: true,
isolating: true
}

这意味着imageAlt将呈现如下:

<div>
<h2>Alt</h2>
<div>Content Goes Here</div>
</div>

子PM节点将入h2div下;所以我们明确指出h2包含子PM节点。

但是在toDom()返回 dom 的情况下。节点而不是数组,这意味着只有一个选项,因此无需定义孔。一个多姆。节点始终是 1 级深度,任何子 ProseMirror 节点都将是直接子节点。

最新更新