# NodeContent NodeContent是ArkUI提供的ContentSlot的管理器。 > **说明:** > > 本模块首批接口从API version 12开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 ## 导入模块 ```ts import {NodeContent } from '@kit.ArkUI' ``` ## NodeContent ### constructor constructor() 节点内容的实体封装。 **原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 **系统能力:** SystemCapability.ArkUI.ArkUI.Full **示例:** ```ts import { nativeNode } from 'libNativeNode.so' // 开发者自己实现的so import {NodeContent } from '@kit.ArkUI' @Component struct Parent { private nodeContent: Content = new NodeContent(); aboutToAppear() { // 通过C-API创建节点,并添加到管理器nodeContent上 nativeNode.createNativeNode(this.nodeContent); } build() { Column() { // 显示nodeContent管理器里存放的Native侧的组件 ContentSlot(this.nodeContent) } } } ``` ### addFrameNode12+ addFrameNode(node: FrameNode): void 根据参数将FrameNode添加到NodeContent中。 **原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 **系统能力:** SystemCapability.ArkUI.ArkUI.Full **参数:** | 参数名 | 类型 | 必填 | 说明 | | ------- | ------------------------------------------------------ | ---- | ---------------- | | node | [FrameNode](./js-apis-arkui-frameNode.md#framenode) | 是 | 需要添加的FrameNode。 | ### removeFrameNode12+ removeFrameNode(node: FrameNode): void 根据参数将FrameNode从NodeContent中删除。 **原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 **系统能力:** SystemCapability.ArkUI.ArkUI.Full **参数:** | 参数名 | 类型 | 必填 | 说明 | | ------- | ------------------------------------------------------ | ---- | ---------------- | | node | [FrameNode](./js-apis-arkui-frameNode.md#framenode) | 是 | 需要删除的FrameNode。 | **示例:** ```ts import {NodeContent, typeNode } from '@kit.ArkUI'; class NodeContentCtrl { content: NodeContent textNode: Array = new Array(); uiContext: UIContext width: number constructor(uiContext: UIContext) { this.content = new NodeContent() this.uiContext = uiContext this.width = Infinity } AddNode() { let node = typeNode.createNode(this.uiContext, "Text") node.initialize("ContentText:" + this.textNode.length).fontSize(20) this.textNode.push(node) this.content.addFrameNode(node) } RemoveNode() { let node = this.textNode.pop() this.content.removeFrameNode(node) } RemoveFront() { let node = this.textNode.shift() this.content.removeFrameNode(node) } GetContent(): NodeContent { return this.content } } @Entry @Component struct Index { @State message: string = 'Hello World'; controller = new NodeContentCtrl(this.getUIContext()); build() { Row() { Column() { ContentSlot(this.controller.GetContent()) Button("AddToSlot") .onClick(() => { this.controller.AddNode() }) Button("RemoveBack") .onClick(() => { this.controller.RemoveNode() }) Button("RemoveFront") .onClick(() => { this.controller.RemoveFront() }) } .width('100%') } .height('100%') } } ```