Back to Plate

位置引用

docs/api/slate/location-ref.cn.mdx

1.0.03.6 KB
Original Source

位置引用是用于在文档中保持特定位置(路径、点或范围)同步的对象,当编辑器应用新操作时会自动更新。您可以随时访问其 current 属性以获取最新的位置值。

类型

PathRef

路径引用对象用于在文档中保持特定路径的同步。使用 editor.api.pathRef 创建。

<API name="PathRef"> <APIAttributes> <APIItem name="current" type="Path | null"> 当前路径值,随操作应用而更新。 </APIItem> <APIItem name="affinity" type="'forward' | 'backward' | null"> 转换路径时首选的方向: - `'forward'`:首选插入内容后的位置 - `'backward'`:首选插入内容前的位置 - `null`:无偏好 </APIItem> <APIItem name="unref()" type="() => Path | null"> 当不再需要同步此路径时调用。返回最终的路径值。 </APIItem> </APIAttributes> </API>

PointRef

点引用对象用于在文档中保持特定点的同步。使用 editor.api.pointRef 创建。

<API name="PointRef"> <APIAttributes> <APIItem name="current" type="Point | null"> 当前点值,随操作应用而更新。 </APIItem> <APIItem name="affinity" type="'forward' | 'backward' | null"> 转换点时首选的方向: - `'forward'`:首选插入内容后的位置 - `'backward'`:首选插入内容前的位置 - `null`:无偏好 </APIItem> <APIItem name="unref()" type="() => Point | null"> 当不再需要同步此点时调用。返回最终的点值。 </APIItem> </APIAttributes> </API>

RangeRef

范围引用对象用于在文档中保持特定范围的同步。使用 editor.api.rangeRef 创建。

<API name="RangeRef"> <APIAttributes> <APIItem name="current" type="TRange | null"> 当前范围值,随操作应用而更新。 </APIItem> <APIItem name="affinity" type="'forward' | 'backward' | 'inward' | 'outward' | null"> 转换范围时首选的方向: - `'forward'`:两个点都首选插入内容后的位置 - `'backward'`:两个点都首选插入内容前的位置 - `'inward'`:在边缘插入内容时范围倾向于保持相同大小 - `'outward'`:在边缘插入内容时范围倾向于扩大 - `null`:无偏好 </APIItem> <APIItem name="unref()" type="() => TRange | null"> 当不再需要同步此范围时调用。返回最终的范围值。 </APIItem> </APIAttributes> </API>

RangeRef 使用示例:

typescript
const selectionRef = editor.api.rangeRef(editor.selection, {
  affinity: 'inward',
})
// 可能会改变选择的操作
Transforms.unwrapNodes(editor)
// 使用引用恢复选择
Transforms.select(editor, selectionRef.unref())

PathRefApi

transform

通过操作转换路径引用。

<API name="transform"> <APIParameters> <APIItem name="ref" type="PathRef"> 要转换的路径引用。 </APIItem> <APIItem name="op" type="Operation"> 要应用的操作。编辑器会根据需要自动调用。 </APIItem> </APIParameters> </API>

PointRefApi

transform

通过操作转换点引用。

<API name="transform"> <APIParameters> <APIItem name="ref" type="PointRef"> 要转换的点引用。 </APIItem> <APIItem name="op" type="Operation"> 要应用的操作。编辑器会根据需要自动调用。 </APIItem> </APIParameters> </API>

RangeRefApi

transform

通过操作转换范围引用。

<API name="transform"> <APIParameters> <APIItem name="ref" type="RangeRef"> 要转换的范围引用。 </APIItem> <APIItem name="op" type="Operation"> 要应用的操作。编辑器会根据需要自动调用。 </APIItem> </APIParameters> </API>