• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# ArkTS卡片主动刷新
2
3本文主要提供主动刷新的开发指导,刷新流程请参考[主动刷新概述](./arkts-ui-widget-interaction-overview.md#主动刷新)。
4
5## 卡片提供方主动刷新卡片内容
6
7卡片提供方可以通过[updateForm](../reference/apis-form-kit/js-apis-app-form-formProvider.md#formproviderupdateform)接口进行主动刷新。推荐与卡片生命周期回调[onFormEvent](../reference/apis-form-kit/js-apis-app-form-formExtensionAbility.md#formextensionabilityonformevent)、[onUpdateForm](../reference/apis-form-kit/js-apis-app-form-formExtensionAbility.md#formextensionabilityonupdateform)、[onAddForm](../reference/apis-form-kit/js-apis-app-form-formExtensionAbility.md#formextensionabilityonaddform)接口搭配使用。
8
9```ts
10import { formBindingData, formProvider } from '@kit.FormKit';
11import { BusinessError } from '@kit.BasicServicesKit';
12
13let storage = new LocalStorage();
14
15@Entry(storage)
16@Component
17struct Index {
18  @StorageLink('formId') formId: string = '';
19  @StorageLink('formData') formData: Object | string = '';
20
21  build() {
22    Column() {
23      Column() {
24        //...
25        Button() {
26          //...
27        }
28        .onClick(() => {
29          console.info(`click to check updateForm, formId: ${this.formId}`);
30          const formInfo: formBindingData.FormBindingData = formBindingData.createFormBindingData(this.formData);
31          // formId需要为实际需要刷新的卡片ID
32          formProvider.updateForm(this.formId, formInfo).then(() => {
33            console.info('updateForm success.');
34          }).catch((error: BusinessError) => {
35            console.error(`updateForm fail, code: ${error?.code}, message: ${error?.message}`);
36          })
37        })
38        .margin(5)
39      }
40      //...
41    }
42    //...
43  }
44}
45```
46<!--Del-->
47
48## 卡片使用方主动刷新卡片内容(仅对系统应用开放)
49
50由于定时、定点刷新存在时间限制,卡片使用方可以通过调用[requestForm](../reference/apis-form-kit/js-apis-app-form-formHost-sys.md#requestform)接口向卡片管理服务请求主动触发卡片的刷新。卡片管理服务触发卡片提供方FormExtensionAbility中的[onUpdateForm](../reference/apis-form-kit/js-apis-app-form-formExtensionAbility.md#formextensionabilityonupdateform)生命周期回调,回调中可以使用[updateForm](../reference/apis-form-kit/js-apis-app-form-formProvider.md#formproviderupdateform)接口刷新卡片内容。
51
52```ts
53import { formHost } from '@kit.FormKit';
54import { BusinessError } from '@kit.BasicServicesKit';
55
56let storage = new LocalStorage();
57
58@Entry(storage)
59@Component
60struct Index {
61  @StorageLink('formId') formId: number = 0;
62
63  build() {
64    Column() {
65      Column() {
66        //...
67        Button() {
68          //...
69        }
70        .onClick(() => {
71          console.info(`click to check requestForm, formId: ${this.formId}`);
72          // formId需要为实际需要刷新的卡片ID
73          formHost.requestForm(this.formId.toString()).then(() => {
74            console.info('requestForm success.');
75          }).catch((error: BusinessError) => {
76            console.error(`requestForm fail, code: ${error?.code}, message: ${error?.message}`);
77          })
78        })
79        .margin(5)
80      }
81      //...
82    }
83    //...
84  }
85}
86```
87<!--DelEnd-->
88