# 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%')
}
}
```