3

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

下图显示了我在说什么:

Slate.js 找到第一个文本图片

在我的图片中,我想找到包含“this is my title.”的节点,即使它之前有几行空行。

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

浏览文档,我发现filterDescendants和 findDescendants 函数似乎可以满足我的要求。

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

我试过这样的事情:

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

但这只是返回null

文档说这findDescendant将“通过迭代器深入查找后代节点”,其中iterator是一个函数,但没有提供您将在此处传递的函数类型的示例。

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

4

1 回答 1

9

Slate.js 作者在这里。

你会想做一些类似的事情:

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

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

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

希望有帮助!

于 2017-05-05T23:38:17.307 回答