• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# @ohos.arkui.observer (无感监听)
2
3提供UI组件行为变化的无感监听能力。
4
5> **说明:**
6>
7> 从API Version 11开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。
8>
9
10## 导入模块
11
12```ts
13import observer from '@ohos.arkui.observer'
14```
15
16## NavDestinationState
17
18NavDestination组件状态。
19
20**系统能力:** SystemCapability.ArkUI.ArkUI.Full
21
22| 名称      | 值  | 说明                     |
23| --------- | --- | ------------------------ |
24| ON_SHOWN  | 0   | NavDestination组件显示。 |
25| ON_HIDDEN | 1   | NavDestination组件隐藏。 |
26
27## RouterPageState
28
29routerPage生命周期触发时对应的状态
30
31**系统能力:** SystemCapability.ArkUI.ArkUI.Full
32
33| 名称              | 值  | 说明                    |
34| ----------------- | --- | ----------------------- |
35| ABOUT_TO_APPEAR       | 0   | page即将显示            |
36| ABOUT_TO_DISAPPEAR    | 1   | page即将销毁            |
37| ON_PAGE_SHOW          | 2   | page显示                |
38| ON_PAGE_HIDE          | 3   | page隐藏                |
39| ON_BACK_PRESS         | 4   | page返回时              |
40
41## NavDestinationInfo
42
43NavDestination组件信息。
44
45**系统能力:** SystemCapability.ArkUI.ArkUI.Full
46
47| 名称         | 类型                                               | 必填 | 说明                                         |
48| ------------ | -------------------------------------------------- | ---- | -------------------------------------------- |
49| navigationId | [ResourceStr](arkui-ts/ts-types.md#resourcestr) | 是   | 包含NavDestination组件的Navigation组件的id。 |
50| name         | [ResourceStr](arkui-ts/ts-types.md#resourcestr) | 是   | NavDestination组件的名称。                   |
51| state        | [NavDestinationState](#navdestinationstate)        | 是   | NavDestination组件的状态。                   |
52
53## RouterPageInfo
54
55RouterPageInfo包含的信息。
56
57**系统能力:** SystemCapability.ArkUI.ArkUI.Full
58
59| 名称         | 类型                                               | 必填 | 说明                                          |
60| ------------ | -------------------------------------------------- | ---- | -------------------------------------------- |
61| context      | [UIAbilityContext](../apis-ability-kit/js-apis-inner-application-uiAbilityContext.md) / [UIContext](./js-apis-arkui-UIContext.md) | 是   | 触发生命周期的routerPage页面对应的上下文信息 |
62| index        | number                                             | 是   | 触发生命周期的routerPage在栈中的位置。         |
63| name         | string                                             | 是   | 触发生命周期的routerPage页面的名称。           |
64| path         | string                                             | 是   | 触发生命周期的routerPage页面的路径。           |
65| state        | [RouterPageState](#routerpagestate)                | 是   | 触发生命周期的routerPage页面的状态             |
66
67## observer.on('navDestinationUpdate')
68
69on(type: 'navDestinationUpdate', callback: Callback\<NavDestinationInfo\>): void
70
71监听NavDestination组件的状态变化。
72
73**系统能力:** SystemCapability.ArkUI.ArkUI.Full
74
75**参数:**
76
77| 参数名   | 类型                                                  | 必填 | 说明                                                                     |
78| -------- | ----------------------------------------------------- | ---- | ------------------------------------------------------------------------ |
79| type     | string                                                | 是   | 监听事件,固定为'navDestinationUpdate',即NavDestination组件的状态变化。 |
80| callback | Callback\<[NavDestinationInfo](#navdestinationinfo)\> | 是   | 回调函数。返回当前的NavDestination组件状态。                             |
81
82**示例:**
83
84```ts
85observer.on('navDestinationUpdate', (info) => {
86    console.info('NavDestination state update', JSON.stringify(info));
87});
88```
89
90## observer.off('navDestinationUpdate')
91
92off(type: 'navDestinationUpdate', callback?: Callback\<NavDestinationInfo\>): void
93
94取消监听NavDestination组件的状态变化。
95
96**系统能力:** SystemCapability.ArkUI.ArkUI.Full
97
98**参数:**
99
100| 参数名   | 类型                                                  | 必填 | 说明                                                                     |
101| -------- | ----------------------------------------------------- | ---- | ------------------------------------------------------------------------ |
102| type     | string                                                | 是   | 监听事件,固定为'navDestinationUpdate',即NavDestination组件的状态变化。 |
103| callback | Callback\<[NavDestinationInfo](#navdestinationinfo)\> | 否   | 回调函数。返回当前的NavDestination组件状态。                             |
104
105**示例:**
106
107```ts
108observer.off('navDestinationUpdate');
109```
110
111## observer.on('navDestinationUpdate')
112
113on(type: 'navDestinationUpdate', options: { navigationId: ResourceStr }, callback: Callback\<NavDestinationInfo\>): void
114
115监听NavDestination组件的状态变化。
116
117**系统能力:** SystemCapability.ArkUI.ArkUI.Full
118
119**参数:**
120
121| 参数名   | 类型                                                                 | 必填 | 说明                                                                     |
122| -------- | -------------------------------------------------------------------- | ---- | ------------------------------------------------------------------------ |
123| type     | string                                                               | 是   | 监听事件,固定为'navDestinationUpdate',即NavDestination组件的状态变化。 |
124| options  | { navigationId: [ResourceStr](arkui-ts/ts-types.md#resourcestr) } | 是   | 指定监听的Navigation的id。                                               |
125| callback | Callback\<[NavDestinationInfo](#navdestinationinfo)\>                | 是   | 回调函数。返回当前的NavDestination组件状态。                             |
126
127**示例:**
128
129```ts
130observer.on('navDestinationUpdate', { navigationId: "testId" }, (info) => {
131    console.info('NavDestination state update', JSON.stringify(info));
132});
133```
134
135## observer.off('navDestinationUpdate')
136
137off(type: 'navDestinationUpdate', options: { navigationId: ResourceStr }, callback?: Callback\<NavDestinationInfo\>): void
138
139取消监听NavDestination组件的状态变化。
140
141**系统能力:** SystemCapability.ArkUI.ArkUI.Full
142
143**参数:**
144
145| 参数名   | 类型                                                                 | 必填 | 说明                                                                     |
146| -------- | -------------------------------------------------------------------- | ---- | ------------------------------------------------------------------------ |
147| type     | string                                                               | 是   | 监听事件,固定为'navDestinationUpdate',即NavDestination组件的状态变化。 |
148| options  | { navigationId: [ResourceStr](arkui-ts/ts-types.md#resourcestr) } | 是   | 指定监听的Navigation的id。                                               |
149| callback | Callback\<[NavDestinationInfo](#navdestinationinfo)\>                | 否   | 回调函数。返回当前的NavDestination组件状态。                             |
150
151**示例:**
152
153```ts
154observer.off('navDestinationUpdate', { navigationId: "testId" });
155```
156
157## observer.on('routerPageUpdate')<sup>11+</sup>
158
159on(type: 'routerPageUpdate', context: UIAbilityContext | UIContext, callback: Callback\<RouterPageInfo\>): void
160
161监听router中page页面的状态变化。
162
163**系统能力:** SystemCapability.ArkUI.ArkUI.Full
164
165**参数:**
166
167| 参数名   | 类型                                                         | 必填 | 说明                                                         |
168| -------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ |
169| type     | string                                                       | 是   | 监听事件,固定为'routerPageUpdate',即router中page页面的状态变化。 |
170| context  | [UIAbilityContext](../apis-ability-kit/js-apis-inner-application-uiAbilityContext.md)&nbsp;\|&nbsp;[UIContext](./js-apis-arkui-UIContext.md) | 是   | 上下文信息,用以指定监听页面的范围 |
171| callback | Callback\<[RouterPageInfo](#routerpageinfo)\>        | 是   | 回调函数。携带pageInfo,返回当前的page页面状态。                 |
172
173**示例:**
174
175```ts
176// used in UIAbility
177import observer from '@ohos.arkui.observer';
178import { UIContext } from '@ohos.arkui.UIContext';
179function callBackFunc(info: observer.RouterPageInfo) {}
180// callBackFunc is user defined function
181observer.on('routerPageUpdate', this.context, callBackFunc);
182// uiContext could be got by window's function: getUIContext()
183uiContext: UIContext | null = null;
184observer.on('routerPageUpdate', this.uiContext, callBackFunc);
185```
186
187## observer.off('routerPageUpdate')<sup>11+</sup>
188
189off(type: 'routerPageUpdate', context: UIAbilityContext | UIContext, callback?: Callback\<RouterPageInfo\>): void
190
191取消监听router中page页面的状态变化。
192
193**系统能力:** SystemCapability.ArkUI.ArkUI.Full
194
195**参数:**
196
197| 参数名   | 类型                                                         | 必填 | 说明                                                         |
198| -------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ |
199| type     | string                                                       | 是   | 监听事件,固定为'routerPageUpdate',即router中page页面的状态变化。 |
200| context  | [UIAbilityContext](../apis-ability-kit/js-apis-inner-application-uiAbilityContext.md)&nbsp;\|&nbsp;[UIContext](./js-apis-arkui-UIContext.md) | 是   | 上下文信息,用以指定监听页面的范围 |
201| callback | Callback\<[RouterPageInfo](#routerpageinfo)\>        | 否   | 需要被注销的回调函。                 |
202
203**示例:**
204
205```ts
206// used in UIAbility
207import observer from '@ohos.arkui.observer';
208import { UIContext } from '@ohos.arkui.UIContext';
209function callBackFunc(info: observer.RouterPageInfo) {}
210// callBackFunc is user defined function
211observer.off('routerPageUpdate', this.context, callBackFunc);
212// uiContext could be got by window's function: getUIContext()
213uiContext: UIContext | null = null;
214observer.off('routerPageUpdate', this.uiContext, callBackFunc);
215```