我正在使用slate.js制作所见即所得的编辑器
我正在尝试查找带有文本的第一个节点。
下图显示了我在说什么:
Slate.js find first text pic
在我的图片中,我希望找到包含“这是我的标题。”的节点,即使前面有几行空行也是如此。
基本上,如果我在编辑器中写了一堆文本,那么如何找到不是空字符串的第一个文本?
浏览文档,我发现filterDescendants和findDescendants函数似乎可以满足我的需求。
但是,我不清楚如何使用它们。
我已经尝试过这样的事情:this.state.state.startBlock.findDescendant((d) => d.text !== "")
但这只是返回null
文档说findDescendant
将“通过迭代器深度查找后代节点”,其中iterator
是一个函数,但没有提供有关在此处传递哪种函数的示例。
有没有人有任何想法或例子?
最佳答案
Slate.js作者在这里。
您将想要执行以下操作:
state.document.getBlocks().find(block => block.text != '')
这将搜索文档中的叶子块节点(在本例中为您的段落,标题等),并找到第一个不为空的节点。
Slate数据模型是使用Immutable.js构建的,因此了解该库的工作方式对于使用Slate很有帮助。在这种情况下,
getBlocks()
返回一个不可变的 List
,它具有find
方法。希望有帮助!