我正在使用slate.js制作一个所见即所得的编辑器 我正试图找到带有文本的第一个节点。
下面的图片展示了我所谈论的内容:
在我的图片中,我想找到包含&#34的节点;这是我的标题。",即使前面有几个空行。
基本上如果我在编辑器中写了一堆文本,我如何找到第一个不是空字符串的文本?
通过文档查看,我发现filterDescendants和findDescendants函数似乎正在寻找我正在寻找的东西。
但是,我不清楚如何使用它们。
我尝试过这样的事情:
this.state.state.startBlock.findDescendant((d) => d.text !== "")
但这只会返回null
文档说findDescendant
将"通过迭代器"深深地找到后代节点,其中iterator
是一个函数,但没有提供什么类型的示例你通过这里的功能。
有没有人有任何想法或例子?
答案 0 :(得分:5)
Slate.js作者在这里。
你想要做类似的事情:
state.document.getBlocks().find(block => block.text != '')
这将搜索文档中的叶块节点(在这种情况下是你的段落,标题等)并找到第一个不空的。
Slate数据模型是使用Immutable.js构建的,因此阅读该库的工作方式对于使用Slate非常有帮助。在这种情况下,getBlocks()
会返回一个不可变List
,其中包含find
方法。
希望有所帮助!