基础组件，用于挂载自定义节点（如[FrameNode](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-arkui-framenode)或[BuilderNode](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-arkui-buildernode)），并通过[NodeController](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-arkui-nodecontroller)动态控制节点的上树和下树。组件不支持尾随添加子节点，接受一个[NodeController](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-arkui-nodecontroller)实例接口，需与NodeController组合使用。

说明

该组件从API version 11开始支持。后续版本如有新增内容，则采用上角标单独标记该内容的起始版本。

该组件下仅支持挂载自定义节点[FrameNode](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-arkui-framenode)或者是[BuilderNode](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-arkui-buildernode)中获取的根节点FrameNode。

不支持挂载查询获得的系统组件[代理节点](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-arkui-framenode#ismodifiable12)。

当前不支持使用[动态属性设置](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/ts-universal-attributes-attribute-modifier)。

该组件下的节点树构建时会使用UI实例[UIContext](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/arkts-apis-uicontext-uicontext)，实例切换时可能会因实例不匹配，导致所绑定[NodeController](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-arkui-nodecontroller)的[makeNode](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-arkui-nodecontroller#makenode)回调方法的入参为undefined，因此该组件当前不支持跨实例的节点复用。

该组件未销毁时，不会主动触发挂载节点的下树。

## 子组件

PhonePC/2in1TabletTVWearable

不支持子组件。

## 接口

PhonePC/2in1TabletTVWearable

### NodeContainer

PhonePC/2in1TabletTVWearable

NodeContainer(controller: NodeController)

**元服务API：** 从API version 12开始，该接口支持在元服务中使用。

**系统能力：** SystemCapability.ArkUI.ArkUI.Full

**参数：**

展开

| 参数名 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| controller | [NodeController](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-arkui-nodecontroller) | 是 | NodeController用于控制NodeContainer中的节点的上树和下树，反映NodeContainer容器的生命周期。 |

## 属性

PhonePC/2in1TabletTVWearable

支持[通用属性](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/ts-component-general-attributes)。

## 事件

PhonePC/2in1TabletTVWearable

支持[通用事件](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/ts-component-general-events)。

## 示例

PhonePC/2in1TabletTVWearable

通过NodeController挂载BuilderNode节点。



```
1. import { NodeController, BuilderNode, FrameNode, UIContext } from '@kit.ArkUI';

3. declare class Params {
4. text: string
5. }

7. @Builder
8. function buttonBuilder(params: Params) {
9. Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.SpaceEvenly }) {
10. Text(params.text)
11. .fontSize(12)
12. Button(`This is a Button`, { type: ButtonType.Normal, stateEffect: true })
13. .fontSize(12)
14. .borderRadius(8)
15. .backgroundColor(0x317aff)
16. }
17. .height(100)
18. .width(200)
19. }

21. class MyNodeController extends NodeController {
22. private rootNode: BuilderNode<[Params]> | null = null;
23. private wrapBuilder: WrappedBuilder<[Params]> = wrapBuilder(buttonBuilder);

25. makeNode(uiContext: UIContext): FrameNode | null {
26. if (this.rootNode === null) {
27. this.rootNode = new BuilderNode(uiContext);
28. this.rootNode.build(this.wrapBuilder, { text: "This is a Text" })
29. }
30. return this.rootNode.getFrameNode();
31. }
32. }


35. @Entry
36. @Component
37. struct Index {
38. private baseNode: MyNodeController = new MyNodeController()

40. build() {
41. Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Start, justifyContent: FlexAlign.SpaceEvenly }) {
42. Text("This is a NodeContainer contains a text and a button ")
43. .fontSize(9)
44. .fontColor(0xCCCCCC)
45. NodeContainer(this.baseNode)
46. .borderWidth(1)
47. .onClick(() => {
48. console.info("click event");
49. })
50. }
51. .padding({ left: 35, right: 35, top: 35 })
52. .height(200)
53. .width(300)
54. }
55. }
```

![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/76/v3/c75btmj_Sti_C2kIk2H03g/zh-cn_image_0000002599478933.jpg?HW-CC-KV=V1&HW-CC-Date=20260511T035723Z&HW-CC-Expire=86400&HW-CC-Sign=5CC07AD66ACF074CB631A0FFDE1AB7180104D42EEC23A6CEBC8DAB57AB4B23D0)