Class: TextNode
lexical.TextNode
階層結構
-
↳
TextNode
↳↳
TabNode
↳↳
HashtagNode
建構子
constructor
• new TextNode(text
, key?
): TextNode
參數
名稱 | 類型 |
---|---|
text | string |
key? | string |
回傳值
繼承自
定義於
packages/lexical/src/nodes/LexicalTextNode.ts:314
屬性
__text
• __text: string
定義於
packages/lexical/src/nodes/LexicalTextNode.ts:288
constructor
• constructor: KlassConstructor
<typeof TextNode
>
定義於
packages/lexical/src/nodes/LexicalTextNode.ts:287
函式
afterCloneFrom
▸ afterCloneFrom(prevNode
): void
在克隆 prevNode 後執行任何狀態更新,這些更新未由靜態 clone 函式中的建構子調用處理。如果你的克隆需要更新的狀態未由建構子直接處理,建議覆蓋此函式,但需要在實現中包含對 super.afterCloneFrom(prevNode)
的調用。此函式僅應由 $cloneWithProperties 函式或通過 super 調用來調用。
參數
名稱 | 類型 |
---|---|
prevNode | this |
回傳值
void
範例
class ClassesTextNode extends TextNode {
// 未顯示: static getType, static importJSON, exportJSON, createDOM, updateDOM
__classes = new Set<string>();
static clone(node: ClassesTextNode): ClassesTextNode {
// 這裡使用繼承的 TextNode 建構子,因此
// classes 不由此函式設置。
return new ClassesTextNode(node.__text, node.__key);
}
afterCloneFrom(node: this): void {
// 這會調用 TextNode.afterCloneFrom 和 LexicalNode.afterCloneFrom
// 以進行必要的狀態更新
super.afterCloneFrom(node);
this.__addClasses(node.__classes);
}
// 此函式為私有實現細節,不適合公開 API,因為它不調用 getWritable
__addClasses(classNames: Iterable<string>): this {
for (const className of classNames) {
this.__classes.add(className);
}
return this;
}
addClass(...classNames: string[]): this {
return this.getWritable().__addClasses(classNames);
}
removeClass(...classNames: string[]): this {
const node = this.getWritable();
for (const className of classNames) {
this.__classes.delete(className);
}
return this;
}
getClasses(): Set<string> {
return this.getLatest().__classes;
}
}
繼承自
定義於
packages/lexical/src/nodes/LexicalTextNode.ts:306
canHaveFormat
▸ canHaveFormat(): boolean
回傳值
boolean
如果文本節點支持字體樣式,則為 true,否則為 false。
定義於
packages/lexical/src/nodes/LexicalTextNode.ts:464
canInsertTextAfter
▸ canInsertTextAfter(): boolean
此函式旨在由 TextNode 子類覆蓋,以控制當用戶事件導致在編輯器中該節點後插入文本時的行為。如果為 true,Lexical 將嘗試在此節點中插入文本。如果為 false,則會在新的兄弟節點中插入文本。
回傳值
boolean
如果文本可以在節點後插入,則為 true,否則為 false。
定義於
packages/lexical/src/nodes/LexicalTextNode.ts:907
canInsertTextBefore
▸ canInsertTextBefore(): boolean
此函式旨在由 TextNode 子類覆蓋,以控制當用戶事件導致在編輯器中該節點前插入文本時的行為。如果為 true,Lexical 將嘗試在此節點中插入文本。如果為 false,則會在新的兄弟節點中插入文本。
回傳值
boolean
如果文本可以在節點前插入,則為 true,否則為 false。
定義於
packages/lexical/src/nodes/LexicalTextNode.ts:896
createDOM
▸ createDOM(config
, editor?
): HTMLElement
在重建過程中調用此函式,以確定要將哪些節點插入到 DOM 中。
此函式必須返回一個 HTMLElement。嵌套元素不受支持。
在更新生命週期的此階段,不要嘗試更新 Lexical EditorState。
參數
名稱 | 類型 | 描述 |
---|---|---|
config | EditorConfig | 允許在重建期間訪問如 EditorTheme 等事物(以應用類別)。 |
editor? | LexicalEditor | 允許在重建期間訪問編輯器以獲取上下文。 |
回傳值
HTMLElement
繼承自
定義於
packages/lexical/src/nodes/LexicalTextNode.ts:470
createParentElementNode
▸ createParentElementNode(): ElementNode
為任何所需的父節點創建邏輯。如果 isParentRequired 返回 true,則應實現此函式。
回傳值
繼承自
LexicalNode.createParentElementNode
定義於
packages/lexical/src/LexicalNode.ts:1094
exportDOM
▸ exportDOM(editor
): DOMExportOutput
控制此節點如何序列化為 HTML。這對於在 Lexical 和非 Lexical 編輯器之間,或在不同命名空間的 Lexical 編輯器之間進行複製和粘貼非常重要,在這些情況下,主要的轉移格式是 HTML。如果你因其他原因需要序列化為 HTML,可以通過 $generateHtmlFromNodes 使用此函式。你也可以使用此函式來構建自己的 HTML 渲染器。
參數
名稱 | 類型 |
---|---|
editor | LexicalEditor |
回傳值
繼承自
定義於
packages/lexical/src/nodes/LexicalTextNode.ts:621
exportJSON
▸ exportJSON(): SerializedTextNode
控制此節點如何序列化為 JSON。這對於在共享相同命名空間的 Lexical 編輯器之間進行複製和粘貼非常重要。如果你需要將 JSON 序列化為持久存儲,也很重要。詳情見 Serialization & Deserialization。
回傳值
繼承自
定義於
packages/lexical/src/nodes/LexicalTextNode.ts:649
getCommonAncestor
▸ getCommonAncestor<T
>(node
): null
| T
返回此節點和提供的節點的最近共同祖先,如果找不到則返回 null。
類型參數
名稱 | 類型 |
---|---|
T | 擴展 ElementNode = ElementNode |
參數
名稱 | 類型 | 描述 |
---|---|---|
node | LexicalNode | 需要尋找共同祖先的另一個節點。 |
回傳值
null
| T
繼承自
定義於
packages/lexical/src/LexicalNode.ts:553
getDetail
▸ getDetail(): number
返回一個 32 位整數,表示當前應用於 TextNode 的 TextDetailTypes。你可能不需要直接使用此函式 - 考慮使用 TextNode.isDirectionless 或 TextNode.isUnmergeable。
回傳值
number
表示文本節點詳細資訊的數字。