我正在使用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方法。

希望有帮助!

10-07 20:15