filterDescendants和findDescendant with slate.js

时间:2017-05-05 21:56:51

标签: javascript wysiwyg slate.js

我正在使用slate.js制作一个所见即所得的编辑器 我正试图找到带有文本的第一个节点。

下面的图片展示了我所谈论的内容:

Slate.js find first text pic

在我的图片中,我想找到包含&#34的节点;这是我的标题。",即使前面有几个空行。

基本上如果我在编辑器中写了一堆文本,我如何找到第一个不是空字符串的文本?

通过文档查看,我发现filterDescendants和findDescendants函数似乎正在寻找我正在寻找的东西。

但是,我不清楚如何使用它们。

我尝试过这样的事情:

this.state.state.startBlock.findDescendant((d) => d.text !== "")

但这只会返回null

文档说findDescendant将"通过迭代器"深深地找到后代节点,其中iterator是一个函数,但没有提供什么类型的示例你通过这里的功能。

有没有人有任何想法或例子?

1 个答案:

答案 0 :(得分:5)

Slate.js作者在这里。

你想要做类似的事情:

state.document.getBlocks().find(block => block.text != '')

这将搜索文档中的叶块节点(在这种情况下是你的段落,标题等)并找到第一个不空的。

Slate数据模型是使用Immutable.js构建的,因此阅读该库的工作方式对于使用Slate非常有帮助。在这种情况下,getBlocks()会返回一个不可变List,其中包含find方法。

希望有所帮助!