HarmonyOS鸿蒙开发 应用开发常见问题总结(持续更新...)

HarmonyOS鸿蒙开发 应用开发常见问题总结(持续更新…)

在学习鸿蒙开发过程中,也是遇到了不少问题,在代码编写过程中,遇到了一些问题,由于是学习阶段,需要时刻记录一下。

If a component attribute supports local initialization, a valid, runtime-independent default value should be set for it.

意思:如果组件属性支持本地初始化,则应为其设置有效的、独立于运行时的默认值。

  • 解决需要为属性设置默认值

原代码:

@ComponentV2
export struct CustomErrorComp {@Param @Require dataSetConfig: CustomDataSetConfig;build() {Column() {// 设置icon、title、message等元素CustomDataSetBuilder(this.dataSetConfig)}.justifyContent(FlexAlign.Center).width('100%').height('100%').backgroundColor($r('app.color.white'))}
}

由于传入的参数dataSetConfig,未设置默认值,这里CustomDataSetConfig是一个interface,
传入默认值代码更改后:

@Param @Require dataSetConfig: CustomDataSetConfig = {title: "",message: "",btnTitle: "",}
...
其他不变

E [ArkRuntime Log] TypeError: is not callable

由于自定义类的interface中有onCallback?: () => void处理点击回调

源代码中的判断有问题,源代码:

    .onClick(()=> {if (this.dataSetConfig.onCallback !== null) {this.dataSetConfig.onCallback!();}})

一开始以为和flutter判断一样!== null,结果这样判断不对
将代码修改如下就正常了:

    .onClick(()=> {if (this.dataSetConfig.onCallback) {this.dataSetConfig.onCallback!();}})

E [ArkRuntime Log] TypeError: Cannot read property length of undefined

无法读取未定义的属性长度

这里未判断,获取了string的length

所以在使用length前需要做一下typeof this.message !== 'undefined'判断

// messageif (this.message !== null && typeof this.message !== 'undefined') {Text(this.message).fontSize(12).fontColor(Color.red).margin({bottom: this.message.length > 0 ? 10 : 0})}

Navigation push之后底部Tabbar 没有隐藏问题

参考https://developer.huawei.com/consumer/cn/doc/architecture-guides/develop-arkui-67-0000002122758974
这里希望可以使用自定义导航栏,根据页面index去切换不同的导航栏,或者隐藏导航栏,思路如下:

修改
通过Navigation嵌套tab,将其隐藏的方式,代码如下

@Entry
@ComponentV2
struct Index {@Local message: string = 'Hello World';@Provider('tabCurrentIndex') tabCurrentIndex: number = 0;// 初始化NavPathStack@Provider('pageInfos') pageInfos: NavPathStack = new NavPathStack()

使用Navigation嵌套tab

Navigation(this.pageInfos){Tabs({index: this.tabCurrentIndex, barPosition:BarPosition.End}){TabContent(){NewsTabsView()}.tabBar(this.TabBuilder({title: "首页",targetIndex: 0,normalImg: $r('app.media.ic_tab_shouye'),selectedImg: $r('app.media.ic_tab_shouye_filled')}))}.barMode(BarMode.Fixed) // 默认值.scrollable(false)  // 限制滑动.onAnimationStart((_index: number, targetIndex: number, _event: TabsAnimationEvent) => {this.tabCurrentIndex = targetIndex;})}.hideTitleBar(true)

跳转使用代码

.onClick(() => {this.pageInfos.pushPathByName("setting", null, true);})

The buildFunction ‘PageSettingBuilder’ configured in the routerMap json file does not exist.

配置route_map时候,指定了buildFunction,
route_map如下

{"routerMap": [{"name": "setting","pageSourceFile": "src/main/ets/pages/pages/SettingIndexPage.ets","buildFunction": "PageSettingBuilder","data": {"description": "this is setting page"}}]
}

所以如果没有在SettingIndexPage.ets页面中创建PageSettingBuilder,则会出现报错

所以在页面增加一个

/// 设置页面
/// 跳转页面入口函数
@Builder
export function PageSettingBuilder() {SettingIndexPage()
}@ComponentV2
export struct SettingIndexPage {// 其他代码
}

Error message:is not callable

在我的代码中,为navigation添加
我的代码如下

  @Consumer('pageInfos') pageInfos: NavPathStack = new NavPathStack()NavDestination() {List({ space: 12 }) {ForEach(this.data, (item: PageInfo) => {ListItem() {Text("Page" + item.title).onClick(() => {this.pageInfos.pushPathByName("setting", null, true);})}}, (item: PageInfo) => item.url.toString())}.width("90%").margin({ top: 12 })}.title("我的").mode(NavDestinationMode.STANDARD).onReady((context: NavDestinationContext) => {this.pageInfos = context.pathStack})

将onReady去掉即可,没有报错了,暂时有点奇怪,还不清楚原因,学习中

  @Consumer('pageInfos') pageInfos: NavPathStack = new NavPathStack()NavDestination() {List({ space: 12 }) {ForEach(this.data, (item: PageInfo) => {ListItem() {Text("Page" + item.title).onClick(() => {this.pageInfos.pushPathByName("setting", null, true);})}}, (item: PageInfo) => item.url.toString())}.width("90%").margin({ top: 12 })}.title("我的")

Navigation页面跳转如何传参数

Navigation中,可以使用this.pageInfos.pushPathByName("setting", param, true);进行页面跳转,
当然在开发中,跳转页面很多时候需要传递参数,传递参数,可以定义interface
我的使用方式如下

export interface SettingPageParam<T> {from:string,tag:stringdata: T
}// 进行跳转let param: SettingPageParam<string> = {from: "my",tag: "mytag",data: "来自我的tab的参数"};this.pageInfos.pushPathByName("setting", param, true);

接收参数,需要通过NavPathStack的getParamByName

  aboutToAppear(): void {let param:SettingPageParam<string> = this.pageInfos.getParamByName('setting')[0] as SettingPageParam<string>;console.info("SettingIndexPage aboutToAppear param.from:"+ param.from + ", param.tag:"+ param.tag + ", param.data:"+ param.data);}// 打印的结果
01-02 16:38:03.633   25140-25140   A03d00/JSAPP                    com.example.myhmapp   I     SettingIndexPage aboutToAppear param.from:my, param.tag:mytag, param.data:来自我的tab的参数

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/501495.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

xilinx的高速接口构成原理和连接结构及ibert工具的使用-以k7 GTX为例

一、相关简介 Xilinx的高速接口称之为transceivers(高速收发器&#xff09;&#xff0c;这部分的电路是专用电路&#xff0c;供电等都是独立的&#xff0c;根据速率可以分为GTP/GTX/GTH/GTY/GTM等。 Xilinx的高速接口是QUAD为单位的&#xff0c;没一个QUAD由一个时钟COMMON资…

机器学习之模型评估——混淆矩阵,交叉验证与数据标准化

目录 混淆矩阵 交叉验证 数据标准化 0-1标准化 z 标准化 混淆矩阵 混淆矩阵&#xff08;Confusion Matrix&#xff09;是一种用于评估分类模型性能的工具。 它是一个二维表格&#xff0c;其中行表示实际的类别&#xff0c;列表示模型预测的类别。 假设我们有一个二分类问题&…

第R3周:RNN-心脏病预测

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 文章目录 一、前言二、代码流程1、导入包&#xff0c;设置GPU2、导入数据3、数据处理4、构建RNN模型5、编译模型6、模型训练7、模型评估 电脑环境&#xff1a;…

40% 降本:多点 DMALL x StarRocks 的湖仓升级实战

小编导读&#xff1a; 多点 DMALL 成立于2015年&#xff0c;持续深耕零售业&#xff0c;为企业提供一站式全渠道数字零售解决方案 DMALL OS。作为 DMALL OS 数字化能力的技术底座&#xff0c;大数据平台历经多次迭代平稳支撑了公司 To B 业务的快速开展。随着国家产业升级和云原…

C语言——字符函数和内存函数

目录 前言 字符函数 1strlen 模拟实现 2strcpy 模拟实现 3strcat 模拟实现 4strcmp 模拟实现 5strncpy 模拟实现 6strncat 模拟实现 7strncmp 模拟实现 8strstr 模拟实现 9strtok 10strerror 11大小写字符转换函数 内存函数 1memcpy 模拟实现 2…

职场常用Excel基础04-二维表转换

大家好&#xff0c;今天和大家一起分享一下excel的二维表转换相关内容~ 在Excel中&#xff0c;二维表&#xff08;也称为矩阵或表格&#xff09;是一种组织数据的方式&#xff0c;其中数据按照行和列的格式进行排列。然而&#xff0c;在实际的数据分析过程中&#xff0c;我们常…

软考教材重点内容 信息安全工程师 第 12 章网络安全审计技术原理与应用

12.1.1 网络安全审计概念 网络安全审计是指对网络信息系统的安全相关活动信息进行获取、记录、存储、分析和利用的工作。网络安全审计的作用在于建立“事后”安全保障措施&#xff0c;保存网络安全事件及行为信息&#xff0c;为网络安全事件分析提供线索及证据&#xff0c;以便…

TT100K数据集, YOLO格式, COCO格式

TT100K交通标志数据集, 标签txt&#xff0c;图像已经分好了测试集&#xff0c;验证集&#xff0c;训练集 1️⃣可以直接导入YOLO进行训练&#xff0c;没有细分类&#xff0c;里面有的类&#xff0c; 闲鱼9.9 解君愁 &#xff0c;明人不说暗话 https://m.tb.cn/h.T7Ossey?tk…

更改element-plus的table样式

表头样式&#xff1a; <el-table :data"props.tableData" style"width: 100%" :header-cell-style"headerCellStyle" :cell-style"cellStyle"> </el-table>样式&#xff1a; // 表头样式 const headerCellStyle {backgro…

“善弈者”也需妙手,Oclean欧可林:差异化不是说说而已

作者 | 曾响铃 文 | 响铃说 俗话说&#xff0c;“牙痛不是病&#xff0c;痛起来要人命”。这话意思大家都知道&#xff0c;牙痛虽不是什么大病&#xff0c;可一旦发作却是极难忍受。 前几日&#xff0c;Oclean欧可林举办了一场AirPump A10氧气啵啵冲牙器新品品鉴会&#xff…

数字货币支付系统开发搭建:构建未来的区块链支付生态

随着数字货币的迅猛发展&#xff0c;越来越多的企业和机构开始关注如何搭建一个高效、安全、可扩展的数字货币支付系统。区块链技术因其去中心化、安全性高、透明性强等优势&#xff0c;已成为开发数字货币支付系统的首选技术。本文将深入探讨数字货币支付系统的开发和搭建过程…

K8s高可用集群之Kubernetes集群管理平台、命令补全工具、资源监控工具部署、常用命令

K8s高可用集群之Kubernetes管理平台、补全命令工具、资源监控工具部署 1.Kuboard可视化管理平台2.kubectl命令tab补全工具3.MetricsServer资源监控工具4.Kubernetes常用命令 1.Kuboard可视化管理平台 可以选择安装k8s官网的管理平台&#xff1b;我这里是安装的其他开源平台Kub…

cka考试-02-节点维护

一.解答答案 kubectl config use-context ek8s kubectl cordon k8s-node1 kubectl drain k8s-node1 --delete-emptydir-data --ignore-daemonsets --force 二.解答思路 记住这2个cordon,drain,使用kubectl -h 查询使用方法 [root@master ~]# kubectl -h |grep -E cordon…

【pytorch】现代循环神经网络-2

1 双向循环神经网络&#xff08;Bi-RNN&#xff09; 具有单个隐藏层的双向循环神经网络的架构如图所示&#xff1a; 对于任意时间步t&#xff0c;给定一个小批量的输入数据 Xt ∈ Rnd &#xff08;样本数n&#xff0c;每个示例中的输入数d&#xff09;&#xff0c;并且令隐藏层…

服务器等保测评日志策略配置

操作系统日志 /var/log/message 系统启动后的信息和错误日志&#xff0c;是Red Hat Linux中最常用的日志之一 /var/log/secure 与安全相关的日志信息 /var/log/maillog 与邮件相关的日志信息 /var/log/cron 与定时任务相关的日志信息 /var/log/spooler 与UUCP和news设备相关的…

Flutter-插件 scroll-to-index 实现 listView 滚动到指定索引位置

scroll-to-index 简介 scroll_to_index 是一个 Flutter 插件&#xff0c;用于通过索引滚动到 ListView 中的某个特定项。这个库对复杂滚动需求&#xff08;如动态高度的列表项&#xff09;非常实用&#xff0c;因为它会自动计算需要滚动的目标位置。 使用 安装插件 flutte…

我用AI学Android Jetpack Compose之开篇

最近突发奇想&#xff0c;想学一下Jetpack Compose&#xff0c;打算用Ai学&#xff0c;学最新的技术应该要到官网学&#xff0c;不过Compose已经出来一段时间了&#xff0c;Ai肯定学过了&#xff0c;用Ai来学&#xff0c;应该问题不大&#xff0c;学习过程记录下来&#xff0c;…

PHP框架+gatewayworker实现在线1对1聊天--发送消息(6)

文章目录 发送消息原理说明发送功能实现html部分javascript代码PHP代码 发送消息原理说明 接下来我们发送聊天的文本信息。点击发送按钮的时候&#xff0c;会自动将文本框里的内容发送出去。过程是我们将信息发送到服务器&#xff0c;服务器再转发给对方。文本框的id为msgcont…

网络安全 | 信息安全管理体系(ISMS)认证与实施

网络安全 | 信息安全管理体系&#xff08;ISMS&#xff09;认证与实施 一、前言二、信息安全管理体系&#xff08;ISMS&#xff09;概述2.1 ISMS 的定义与内涵2.2 ISMS 的核心标准 ——ISO/IEC 27001 三、信息安全管理体系&#xff08;ISMS&#xff09;认证3.1 认证的意义与价值…

服务器数据恢复—服务器硬盘亮黄灯的数据恢复案例

服务器硬盘指示灯闪烁黄灯是一种警示&#xff0c;意味着服务器硬盘出现故障即将下线。发现这种情况建议及时更换硬盘。 一旦服务器上有大量数据频繁读写&#xff0c;硬盘指示灯会快速闪烁。服务器上某个硬盘的指示灯只有黄灯亮着&#xff0c;而其他颜色的灯没有亮的话&#xff…