filterDescendant和带有slate.js的findDescendant

Jef*_*xim 2 javascript wysiwyg slate.js

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

下图显示了我在说什么:

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

在我的图片中,我希望找到包含“这是我的标题。”的节点,即使它前面有几行空行也是如此。

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

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

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

我已经尝试过这样的事情:

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

但这只是返回 null

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

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

Ian*_*lor 5

Slate.js作者在这里。

您将想要执行以下操作:

state.document.getBlocks().find(block => block.text != '')
Run Code Online (Sandbox Code Playgroud)

这将搜索文档中的叶子块节点(在本例中为您的段落,标题等),并找到第一个不为空的节点。

Slate数据模型是使用Immutable.js构建的,因此了解该库的工作方式对于使用Slate很有帮助。在这种情况下,getBlocks()返回一个List具有find方法的不可变。

希望有帮助!

  • 这应该添加到文档中。Slate API很简洁,但是文档确实缺少示例。 (2认同)