1# 自定义组件内置方法
2
3自定义组件内置方法是由ArkUI开发框架提供给应用开发者的,定义在自定义组件基类上的API。应用开发者可以在自定义组件的实例上调用对应的API以获取当前自定义组件实例相关的信息。例如,查询当前自定义组件上下文的UIContext信息。
4
5> **说明:**
6>
7> 本模块首批接口从API version 11开始支持,后续版本的新增接口,采用上角标单独标记接口的起始版本。
8>
9
10## getUIContext
11
12getUIContext(): UIContext
13
14获取UIContext对象。
15
16**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
17
18**系统能力:** SystemCapability.ArkUI.ArkUI.Full
19
20**返回值:**
21
22| 类型                                                      | 说明                    |
23| --------------------------------------------------------- | ----------------------- |
24| [UIContext](../js-apis-arkui-UIContext.md#uicontext) | 返回UIContext实例对象。 |
25
26**示例:**
27
28```ts
29import { UIContext } from '@kit.ArkUI';
30
31@Entry
32@Component
33struct MyComponent {
34  aboutToAppear() {
35    let uiContext: UIContext = this.getUIContext();
36  }
37
38  build() {
39    // ...
40  }
41}
42```
43
44## getUniqueId<sup>12+</sup>
45
46getUniqueId(): number
47
48获取当前Component的UniqueId。UniqueId为系统为每个组件分配的Id,可保证当前应用中的唯一性。若在组件对应的节点未创建或已销毁时获取,返回无效UniqueId:-1。
49
50**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
51
52**系统能力:** SystemCapability.ArkUI.ArkUI.Full
53
54**返回值:**
55
56| 类型                                                      | 说明                    |
57| --------------------------------------------------------- | ----------------------- |
58| number | 返回当前Component的UniqueId。 |
59
60**示例:**
61
62```ts
63@Entry
64@Component
65struct MyComponent {
66  aboutToAppear() {
67    let uniqueId: number = this.getUniqueId();
68  }
69
70  build() {
71    // ...
72  }
73}
74```
75
76## queryNavDestinationInfo
77
78queryNavDestinationInfo(): NavDestinationInfo | undefined;
79
80查询自定义组件所属的NavDestination信息。
81
82**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
83
84**系统能力:** SystemCapability.ArkUI.ArkUI.Full
85
86**返回值:**
87
88| 类型                                                                       | 说明      |
89| -------------------------------------------------------------------------- | --------- |
90| [NavDestinationInfo](../js-apis-arkui-observer.md#navdestinationinfo) \| undefined | 返回NavDestinationInfo实例对象。 |
91
92**示例:**
93
94```ts
95import { uiObserver } from '@kit.ArkUI'
96
97@Component
98export struct NavDestinationExample {
99  build() {
100    NavDestination() {
101      MyComponent()
102    }
103  }
104}
105
106@Component
107struct MyComponent {
108  navDesInfo: uiObserver.NavDestinationInfo | undefined
109
110  aboutToAppear() {
111    // this指代MyComponent自定义节点,并从该节点向上查找其最近的一个类型为NavDestination的父亲节点
112    this.navDesInfo = this.queryNavDestinationInfo();
113    console.log('get navDestinationInfo: ' + JSON.stringify(this.navDesInfo))
114  }
115
116  build() {
117    // ...
118  }
119}
120```
121
122## queryNavigationInfo<sup>12+</sup>
123
124queryNavigationInfo(): NavigationInfo | undefined
125
126查询自定义组件所属的Navigation信息。
127
128**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
129
130**系统能力:** SystemCapability.ArkUI.ArkUI.Full
131
132**返回值:**
133
134| 类型                                                                       | 说明      |
135| -------------------------------------------------------------------------- | --------- |
136| [NavigationInfo](../js-apis-arkui-observer.md#navigationinfo12) \| undefined | 返回NavigationInfo实例对象。 |
137
138**示例:**
139
140```ts
141// index.ets
142import { uiObserver } from '@kit.ArkUI'
143
144@Entry
145@Component
146struct MainPage {
147  pathStack: NavPathStack = new NavPathStack()
148
149  build() {
150    Navigation(this.pathStack) {
151      // ...
152    }.id("NavigationId")
153  }
154}
155
156
157@Component
158export struct PageOne {
159  pathStack: NavPathStack = new NavPathStack()
160
161  aboutToAppear() {
162    // this指代PageOne自定义节点,并从该节点向上查找其最近的一个类型为Navigation的父亲节点
163    let navigationInfo: uiObserver.NavigationInfo | undefined = this.queryNavigationInfo()
164    console.log('get navigationInfo: ' + JSON.stringify(navigationInfo))
165    if (navigationInfo !== undefined) {
166      this.pathStack = navigationInfo.pathStack
167    }
168  }
169
170  build() {
171    NavDestination() {
172      // ...
173    }.title('PageOne')
174  }
175}
176```
177
178## queryRouterPageInfo<sup>12+</sup>
179
180queryRouterPageInfo(): RouterPageInfo | undefined;
181
182获取RouterPageInfo实例对象。
183
184**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
185
186**系统能力:** SystemCapability.ArkUI.ArkUI.Full
187
188**返回值:**
189
190| 类型                                                         | 说明                         |
191| ------------------------------------------------------------ | ---------------------------- |
192| [RouterPageInfo](../js-apis-arkui-observer.md#routerpageinfo) \| undefined | 返回RouterPageInfo实例对象。 |
193
194**示例:**
195
196```ts
197import { uiObserver } from '@kit.ArkUI'
198
199@Entry
200@Component
201struct MyComponent {
202  aboutToAppear() {
203    let info: uiObserver.RouterPageInfo | undefined = this.queryRouterPageInfo();
204  }
205
206  build() {
207    // ...
208  }
209}
210```
211
212