【每日学点HarmonyOS Next知识】web网络拦截、对话框、网页重定向、数据作用域、多线程

ops/2025/3/6 10:30:22/

【每日学点HarmonyOS Next知识】web网络拦截、对话框、网页重定向、数据作用域、多线程

1、HarmonyOS 在web网络拦截情况下,在网络失败情况下,web组件的onErrorReceive和onHttpErrorReceive均未回调?

在网络拦截情况下,在网络失败情况下,web组件的onErrorReceive和onHttpErrorReceive均未回调 拦截接口使用如下: OH_ArkWeb_CreateResponse(&arkResponse); OH_ArkWebResponse_SetError(arkResponse, ARKWEB_ERR_FAILED); OH_ArkWebResourceHandler_DidReceiveResponse(arkResourceHandler, arkResponse);

如果在response阶段发生错误 通过response->seterror来回调 如果是数据传输过程中发生错误 用OH_ArkWebResourceHandler_DidFailWithError

2、HarmonyOS openCustomDialog 进入新页面后dialog出现在新页面?

openCustomDialog 进入新页面后dialog出现在新页面

方案是跳转页面时先关闭dialog回来再打开,可以使用全局变量来控制弹窗的关闭和显示参考文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/arkts-appstorage-V5

AppStorage是应用全局的UI状态存储,是和应用的进程绑定的,由UI框架在应用程序启动时创建,为应用程序UI状态属性提供中央存储。

和AppStorage不同的是,LocalStorage是页面级的,通常应用于页面内的数据共享。而AppStorage是应用级的全局状态共享,还相当于整个应用的“中枢”,持久化数据PersistentStorage和环境变量Environment都是通过AppStorage中转,才可以和UI交互。

本文仅介绍AppStorage使用场景和相关的装饰器:@StorageProp和@StorageLink。

AppStorage是应用全局的UI状态存储,不同于@State等装饰器仅能在组件树上传递,AppStorage的目的是为了给开发者提供更大范围的跨ability基本的数据共享。在阅读本文档前,建议开发者对状态管理框架中AppStorage的定位有一个宏观了解。建议提前阅读:状态管理概述。

AppStorage还提供了API接口,可以让开发者通过接口在自定义组件外手动触发AppStorage对应key的增删改查,建议配合AppStorage API文档阅读。

3、HarmonyOS ArkWeb网页重定向问题?

如果是在web组件中,可以使用onLoadIntercept判断重定向,进行相关操作,文档可参考:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/ts-basic-components-web-V5#onloadintercept10

4、HarmonyOS 自定义组件的自定义布局 数据的作用域不对?

参考代码:

import { TeacherInfoModel } from './TeacherInfoModel';
import { promptAction } from '@kit.ArkUI';@Observed
export class TeacherInfoViewModel {teacherInfoModel: TeacherInfoModel = new TeacherInfoModel();changeId(id: string): TeacherInfoModel {this.teacherInfoModel.id = id;return this.teacherInfoModel;}//检查checkModel(teacherInfoModel: TeacherInfoModel) {this.teacherInfoModel = teacherInfoModel;}
}
import { getTeacherInfoModel, TeacherInfoModel } from '../comp/TeacherInfoModel';
import { TeacherInfoViewModel } from '../comp/TeacherInfoViewModel';
import { CommComponent } from './CommComponent';
import { ComponentStatus } from './CommonEnums';
import { promptAction } from '@kit.ArkUI';@Entry
@Component
struct Index {@State teacherInfoViewModel: TeacherInfoViewModel = new TeacherInfoViewModel();@State state: ComponentStatus = ComponentStatus.LOADINGaboutToAppear(): void {this.state = ComponentStatus.LOADING;//发起网络请求this.requestNetWork();}private requestNetWork() {getTeacherInfoModel("参数").then((res: TeacherInfoModel) => {this.teacherInfoViewModel.checkModel(res);this.state = ComponentStatus.SUCCESS;});}build() {Row() {Column() {CommComponent({componentStatus: this.state,data: this.teacherInfoViewModel.teacherInfoModel,builder: () => {this.successBuild()},builderLoading: () => {this.loadingBuild()}}).onClick((e) => {this.requestNetWork();})}.width('100%')}.height('100%')}@BuildersuccessBuild() {//问题1 id数据不会更新Column() {Text(`网络数据:${this.teacherInfoViewModel?.teacherInfoModel?.id} `).fontSize(50).fontWeight(FontWeight.Bold)}.width('100%').onClick(() => {//问题: 点击重新请求 后看问题1 ID不会更新let param = this.teacherInfoViewModel.changeId("onClickID") as TeacherInfoModel//此处仅用到@State,直接修改对象从而触发UI刷新let teacherInfoViewModelTemp: TeacherInfoViewModel = new TeacherInfoViewModel()teacherInfoViewModelTemp.teacherInfoModel = paramthis.teacherInfoViewModel = teacherInfoViewModelTemppromptAction.showToast({ message: `更新后的id为${JSON.stringify(param)}` })})}@BuilderloadingBuild() {Column() {Text(`Loading... `).fontSize(50).fontWeight(FontWeight.Bold)}.width('100%')}
}
5、HarmonyOS 能够在主线程给 Worker 传递一个函数,让这个函数在 Worker 的线程中执行么?

能够在主线程给 Worker 传递一个函数,让这个函数在 Worker 的线程中执行么?

尝试以下方案,在主线程中定义一个函数,并通过Worker的onmessage接口将这个函数传递给Worker线程执行。

参考文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-worker-V5#onmessage9


http://www.ppmy.cn/ops/163576.html

相关文章

【AI深度学习基础】Pandas完全指南终极篇:构建企业级数据工程与AI应用 (含完整代码)

📚 Pandas 系列文章导航 入门篇 🌱进阶篇 🚀终极篇 🌌 🌌 前言 通过前两篇的学习,我们已掌握 Pandas 的核心操作与高阶技巧。本篇将突破工具边界,探索 生产级数据工程架构设计、亿级数据处理方…

GradientDrawable自定义视图设计

简介 GradientDrawable用于定义具有渐变颜色的图形。作为 Drawable 的一种,GradientDrawable 可以用来设置视图(如 View、Button、TextView 的背景)的形状、大小、颜色以及边框等属性。它的灵活性使得开发者能够在不依赖外部图片资源的情况下…

用于管理 Elasticsearch Serverless 项目的 AI Agent

作者:来自 Elastic Fram Souza 由自然语言驱动的 AI 代理,可轻松管理 Elasticsearch Serverless 项目 - 支持项目创建、删除和状态检查。 这个小型命令行工具让你可以用简单的英语管理你的无服务器 Elasticsearch 项目。它通过AI(这里是 Ope…

如何将飞书多维表格与DeepSeek R1结合使用:效率提升的完美搭档

将飞书的多维表格与DeepSeek R1结合使用,就像为你的数据管理和分析之旅装上一台涡轮增压器。两者的合作,不仅仅在速度上让人耳目一新,更是将智能化分析带入了日常的工作场景。以下是它们如何相辅相成并改变我们工作方式的一些分享。 --- 在…

Diffusion模型中时间t嵌入的方法

Diffusion模型中时间t嵌入的方法 class PositionalEmbedding(nn.Module):def __init__(self, dim, scale1.0):super().__init__()assert dim % 2 0self.dim dimself.scale scaledef forward(self, x):device x.devicehalf_dim self.dim // 2emb math.log(10000) / half_…

FastGPT 源码:混合检索调用链路

文章目录 FastGPT 源码:混合检索调用链路1. 入口函数2. 核心搜索函数3. RRF合并函数4. Rerank重排序函数5. 完整流程 FastGPT 源码:混合检索调用链路 主要调用链路如下: 1. 入口函数 在 dispatchDatasetSearch(packages/servic…

Mac OS升级后变慢了,如何恢复老系统?

我的一台Mac Air闲置很久了,原因是某次系统升级后用着会卡,有差不多10年没用了。今天想试着恢复一下出厂系统,目前看这条路可以走通。记录如下: 1、去哪里下载旧版系统? https://support.apple.com/zh-cn/102662 2、…

游戏引擎学习第136天

回顾 今天,我们的工作重点是继续探索之前搭建的资产系统,目的是最终定义我们的资产包文件格式。通过这个工作,我们希望能够创建一个符合我们要求的资产包文件。这样,我可以在直播之外的时间完成它,并为我们提供一个符…