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