2017-05-05 213 views
2

我正在製作使用slate.js的wysiwyg編輯器 我處於一種情況,我試圖找到帶有文本的第一個節點。filterDescendants and findDescendant with slate.js

下面這張圖片顯示了我說的:

Slate.js find first text pic

在我的照片,我想找到包含節點「這是我的稱號。」,即使有幾個在它之前的空行。

基本上,如果我有一堆編輯器中編寫的文本,我如何找到不是空字符串的第一個文本?

通過文檔查看,我發現filterDescendants和findDescendants函數似乎做我在找什麼。

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

我已經試過這樣的事情:

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

但這只是返回null

的文檔說findDescendant將「深切找到迭代後繼節點」,其中iterator是函數,但沒有提供什麼樣的例子提供你在這裏傳遞的函數。

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

回答

4

Slate.js作者在這裏。

你會喜歡想做的事情是這樣的:

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

這將通過葉塊節點在文檔中搜索(在這種情況下,你的段落,標題等),並找到第一個不是空的。

Slate數據模型使用Immutable.js構建,因此閱讀該庫的工作原理對使用Slate非常有幫助。在這種情況下,getBlocks()返回一個不可變的List,它有一個find方法。

希望有幫助!