0

我正在使用 slatejs,我想知道:

如果我当前的 Element.type 是title, 看起来像<h1></h1>
但是当我单击 时enter,它将创建一个新<h1>标签。

如果我想在类型之后换行title并且新元素类型将成为默认类型,我该怎么办?

4

1 回答 1

0

假设您的节点看起来像:{children : [{text: ''}], type: 'title'} 或类似的东西。

当您按enter时,它会添加一个空节点,例如 {children : [{text: ''}], type: 'title'}

您应该能够以insertBreak这种方式修改行为以修改它添加的节点类型:

const { insertBreak } = editor

  editor.insertBreak = () => {
    const { selection } = editor

    if (selection) {
      const [title] = Editor.nodes(editor, {
        match: n =>
          !Editor.isEditor(n) &&
          Element.isElement(n) &&
          (n.type === 'title')
      })

      if(title){
        Transforms.insertNodes(editor, {
          children: [{text: ""}],
          type: 'default'
        })
        return
      }
    }
    insertBreak()
  }
于 2022-02-01T07:01:52.710 回答