操作:Operations
操作是在当调用命令和转换时候执行的细粒度(granular)低级操作。单个命令可能导致许多更低级的操作被应用到编辑器。
和命令不同的地方是,操作是不可扩展的。Slate 核心定义了所有在富文本文档上可能用到的操作。比如说:
editor.apply({
type: 'insert_text',
path: [0, 0],
offset: 15,
text: 'A new string of text to be inserted.',
})
editor.apply({
type: 'remove_node',
path: [0, 0],
node: {
text: 'A line of text!',
},
})
editor.apply({
type: 'set_selection',
properties: {
anchor: { path: [0, 0], offset: 0 },
},
newProperties: {
anchor: { path: [0, 0], offset: 15 },
},
})
Slate 会自动将复杂的命令转换为低级操作,然后把它们应用到文档上,所以你基本上不用考虑它们。
🤖 Slate 的编辑行为被定义为操作(operations),这使得协同编辑成为可能,因为每个变化都是更容易被定义、应用、组合的,以及更容易实现撤销事件的!