0

在 ProseMirror 中,.toDOMschema 的方法通常返回一个嵌套数组,描述如何将节点渲染到 DOM,类似于“虚拟 dom”数据结构。该数据结构还可以包含 ProseMirror 所称的“洞”,由0. 这个洞是 ProseMirror 将插入节点内容的地方,例如文本或其他节点。

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

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

4

1 回答 1

2

即使 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.Node而不是数组的情况下,这意味着只有一个选项,因此无需定义孔。dom.Node总是 1 级深,任何子ProseMirror节点都将是直接子节点。

于 2020-01-18T19:03:39.083 回答