
利用 slatejs api 实现文本选择和标记添加
SlateJS 提供了便捷的 API 接口,允许开发者直接操作文本范围并添加标记,无需用户手动选择文本。Transforms.setNodes 函数是实现此功能的关键。
Transforms.setNodes 函数详解
Transforms.setNodes 函数通过指定文本范围和更新函数来修改节点属性。具体步骤如下:
-
确定文本范围: 例如,使用
Editor.edges(editor)获取文本范围边界。 -
调用
Transforms.setNodes: 该函数接受三个参数:-
editor:SlateJS 编辑器实例。 -
textRange:需要更新的文本范围对象,包含anchor和focus属性,分别表示范围的起始和结束位置。 -
update:一个更新函数,用于修改节点属性,例如添加或删除标记。
-
代码示例:添加粗体样式
以下代码演示如何为文本索引 2 到 3(假设为 "gm")添加粗体样式:
传媒企业网站系统使用热腾CMS(RTCMS),根据网站板块定制的栏目,如果修改栏目,需要修改模板相应的标签。站点内容均可在后台网站基本设置中添加。全站可生成HTML,安装默认动态浏览。并可以独立设置SEO标题、关键字、描述信息。源码包中带有少量测试数据,安装时可选择演示安装或全新安装。如果全新安装,后台内容充实后,首页才能完全显示出来。(全新安装后可以删除演示数据用到的图片,目录在https://
import { Transforms } from 'slate';
const editor = ...; // SlateJS 编辑器对象
const textRange = { anchor: 2, focus: 3 };
Transforms.setNodes(editor, textRange, { bold: true });
重要提示
使用 Transforms.setNodes 时,请注意以下几点:
-
有效文本范围: 确保提供的
textRange是有效的文本范围。 - 属性操作: 更新函数只能用于添加、删除或修改节点属性(标记),不能直接修改文本内容。
- 状态更新: 执行此操作后,SlateJS 会自动更新编辑器状态并触发相关事件。
通过 Transforms.setNodes 函数,您可以高效地控制 SlateJS 编辑器中的文本标记,简化应用开发流程。









