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