插件
你已经知道了 Slate 编辑器 的行为可以被重写。这些重写可以被打包到一个插件里用于复用,测试以及分享。这就是关于 Slate 架构最强大的地方之前。
插件是一个简单的函数,接收一个 Editor 对象,并在以某种方式对其更改后返回它。
比如,一个标记图像节点为空(void)的插件:
const withImages = editor => {const { isVoid } = editoreditor.isVoid = element => {return element.type === 'image' ? true : isVoid(editor)}return editor}
然后可以这样使用它:
import { createEditor } from 'slate'const editor = withImages(createEditor())
这种插件组合模型使 Slate 极易扩展!
辅助函数
除了插件功能,你可能还想要暴露和插件一起使用的辅助函数。比如:
import { Editor, Element } from 'slate'const MyEditor = {...Editor,insertImage(editor, url) {const element = { type: 'image', url, children: [{ text: '' }] }Transforms.insertNodes(editor, element)},}const MyElement = {...Element,isImageElement(value) {return Element.isElement(element) && element.type === 'image'},}
然后你就可以在任何地方同时使用 MyEditor 和 MyElement 了。
