在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节点将入h2
或div
下;所以我们明确指出h2包含子PM节点。
但是在toDom()
返回 dom 的情况下。节点而不是数组,这意味着只有一个选项,因此无需定义孔。一个多姆。节点始终是 1 级深度,任何子 ProseMirror 节点都将是直接子节点。