HarmonyOS 3.1/4.0应用升级到HarmonyOS NEXT改动点

在 “2024鸿蒙零基础快速实战-仿抖音App开发(ArkTS版)”(https://coding.imooc.com/class/843.html)视频课程中,因为讲师在该课程授课时是使用的HarmonyOS 3.1/4.0应用(API 9),如果部分学员采用了最新的HarmonyOS NEXT API,此时就会遇到API兼容性的问题。

本文整理了从HarmonyOS 3.1/4.0应用升级到HarmonyOS NEXT(Developer Preview2)改动点。

获取路由参数

// 从路由参数中获取用户信息
let userInfo: UserInfo = params[`${Constants.PARAM_LOGGED_USER_INFO_KEY}`];

报错:Indexed access is not supported for fields (arkts-no-props-by-index) <ArkTSCheck>

不应该通过索引来访问对象

错误原因:在 HarmonyOS Next 开发中,如果你不能使用 TypeScript 或 JavaScript 的标准库,包括 hasOwnProperty 和通过 []. 获取对象的属性值,那么你需要寻找其他方法来将对象转换为 Map。由于 ArkTS 对动态特性的限制,你可以考虑使用递归函数来遍历对象的属性,并将它们添加到 Map 中。

改为

// 从路由参数中获取用户信息
let userInfo: UserInfo = new Map(Object.entries(params))[`${Constants.PARAM_LOGGED_USER_INFO_KEY}`];
router.replaceUrl({url: 'pages/Index',// 通过路由参数,传递待发布的视频数据params: {[`${Constants.PARAM_PUBLISHED_VIDEO_INFO_KEY}`]: this.selectedVideoInfo}
})

报错:Objects with property names that are not identifiers are not supported (arkts-identifiers-as-prop-names) <ArkTSCheck>

改为

router.replaceUrl({url: 'pages/Index',// 通过路由参数,传递待发布的视频数据params: {'publishedVideoInfo': this.selectedVideoInfo}
})

设置应用全局的UI状态存储

AppStorage.SetOrCreate('UserInfo.username', userInfo.username);

改为

AppStorage.setOrCreate('UserInfo.username', userInfo.username);
let username: string = AppStorage.Get('UserInfo.username');

改为

let username: string = AppStorage.get('UserInfo.username') as string;

不要导出@Entry

@Entry
@Component
export struct VideoPublishPage {
@Entry
@Component
struct VideoPublishPage {

Property ‘videoId’ has no initializer and is not definitely assigned in the constructor.

export class VideoInfo {// 视频IDvideoId: number;
 Property 'videoId' has no initializer and is not definitely assigned in the constructor.

改为

export class VideoInfo {// 视频IDvideoId: number = 0;

参考资料

  • 本文同步至:https://waylau.com/changes-upgrade-from-3-1-4-0-to-harmonyos-next-developer-preview2/
  • 《跟老卫学HarmonyOS开发》 开源免费教程,https://github.com/waylau/harmonyos-tutorial
  • 《鸿蒙HarmonyOS手机应用开发实战》(清华大学出版社)
  • 《鸿蒙HarmonyOS应用开发从入门到精通战》(北京大学出版社)
  • “鸿蒙系统实战短视频App 从0到1掌握HarmonyOS”(https://coding.imooc.com/class/674.html)
  • 《鸿蒙HarmonyOS应用开发入门》(清华大学出版社)
  • “2024鸿蒙零基础快速实战-仿抖音App开发(ArkTS版)”(https://coding.imooc.com/class/843.html)

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

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

相关文章

在亚马逊云科技上搭建云原生生成式AI教育学习平台

项目简介&#xff1a; 小李哥将继续每天介绍一个基于亚马逊云科技AWS云计算平台的全球前沿AI技术解决方案&#xff0c;帮助大家快速了解国际上最热门的云计算平台亚马逊云科技AWS AI最佳实践&#xff0c;并应用到自己的日常工作里。 本次介绍的是如何利用亚马逊云科技大模型托…

1.2 C 语言环境:MinGW 与 CLion 的安装与配置

目录 1 C 语言的由来 2 安装 MinGW 编译器 3 Windows 中安装 CLion 开发环境 3.1 安装 CLion 开发环境 3.2 运行试用 30 天 3.3 新建项目​ 3.4 汉化 4 Mac 中安装 Clion 开发环境 4.1 安装 CLion 开发环境 4.2 运行试用 30 天 4.3 新建项目 ​4.4 汉化 5 向日葵的…

突破百度网盘的下载限速,两种方法教会你【超详细】

一、前言 Hello&#xff0c;大家后&#xff0c;我是博主英杰&#xff0c;前几天&#xff0c;我在使用百度网盘过程中&#xff0c;下载速度极慢&#xff0c;自己作为一个白嫖党&#xff0c;开会员也是心疼那点钱&#xff0c;所以在网上找了几个有效解决百度网盘限速问题的教程&a…

arcgis-坡度坡向分析

坡向的描述有定性和定量两种方式&#xff0c;定量是以东为0&#xff0c;顺时针递增&#xff0c;南为90&#xff0c;西为180&#xff0c;北为270等&#xff0c;范围在0&#xff5e;35959′59″之间。 定性描述有8方向法和4方向法. 8 方向为东、东南、南、西南、西、西北、北、东…

JavaWeb-01(Java进阶内容详解,Html、CSS、JS)

一、前端技术结构分析 网页的结构&#xff08;HTML&#xff09;、表现(CSS)、行为(JS) 1.HTML定义界面整体结构 2.CSS定义页面样式 3.JS实现动态效果 二、HTML 2.1安装VS Code及前端开发插件 Chinese (Simplified) (简体中文) Language Pack for Visual Studio Code Code Spe…

golang并发控制

常见的并发控制 常见的并发控制 channel:通过无缓冲的channel进行同步调用&#xff0c;有缓冲的channel进行异步调用&#xff0c;也可限制并发数量 waitgroup:可以通过add来动态调整&#xff0c;释放的时间需要使用defer 进行wg.done操作 context&#xff1a;通过在协程之间…

笔记本CPU天梯图(2024年8月),含AMD/骁龙等新CPU

原文地址&#xff08;高清无水印原图/持续更新/含榜单出处链接&#xff09;&#xff1a; 2024年8月笔记本CPU天梯图 2024年8月笔记本CPU天梯图 2024年8月5日更新日志&#xff1a;常规更新Cinebench R23、PassMark笔记本CPU天梯图&#xff0c;新增Geekbench 6.2单核多核天梯图&…

inner join, left join, right join, full join 的区别

1. 初始化表结构 SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS 0;-- ---------------------------- -- Table structure for t_city -- ---------------------------- DROP TABLE IF EXISTS t_city; CREATE TABLE t_city (id varchar(255) CHARACTER SET utf8mb4 COLLATE utf…

Windows Server修改远程桌面端口

新建入站规则 填写端口 允许连接 修改远程桌面端口 winR打开注册表 计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\Wds\rdpwd\Tds\tcp修改PortNumber为新端口 计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\Wi…

根据 IP 地址配置子网示例(下挂 hub 接不同 vlan 终端)

我们一般根据端口配置子网比较简单&#xff0c;但是如果换接口&#xff0c;就又要到交换机上重新配置端口所属 vlan 了&#xff0c;紧急情况下&#xff0c;还是比较耽误时间的。但如果根据IP地址配置 vlan&#xff0c;则可以插在交换机上任意端口&#xff0c;排障时比较节省时间…

深入理解Linux线程:从基础到进阶的全面指南

目录 一.线程概念1.理解Linux下的线程2.线程优缺点与异常3.线程VS进程4.再谈进程地址空间 二.线程控制1.线程的创建使用2.线程在进程地址空间的结构3.初窥多线程4.多线程抢票 三.线程互斥1.进程线程间的互斥相关背景概念2.互斥锁 四.线程安全1.线程安全和可重入函数2.死锁3.线程…

人工智能时代:程序员的核心竞争力重塑之旅

人工智能时代&#xff1a;程序员的核心竞争力重塑之旅 在人工智能&#xff08;AI&#xff09;技术日新月异的今天&#xff0c;程序员的角色与职责正经历着前所未有的变革。随着自动化、智能化工具的普及&#xff0c;许多传统编程任务被高效替代&#xff0c;这不禁让人思考&…

【基础算法总结】BFS 解决 FloodFill 算法

BFS 解决 FloodFill 算法 1.图像渲染2.岛屿数量3.岛屿的最大面积4.被围绕的区域 点赞&#x1f44d;&#x1f44d;收藏&#x1f31f;&#x1f31f;关注&#x1f496;&#x1f496; 你的支持是对我最大的鼓励&#xff0c;我们一起努力吧!&#x1f603;&#x1f603; FloodFill 算…

【基础算法总结】BFS 解决最短路径问题

BFS 解决最短路径问题 1.最短路径问题简介2.迷宫中离入口最近的出口3.最小基因变化4.单词接龙4.为高尔夫比赛砍树 点赞&#x1f44d;&#x1f44d;收藏&#x1f31f;&#x1f31f;关注&#x1f496;&#x1f496; 你的支持是对我最大的鼓励&#xff0c;我们一起努力吧!&#x1…

Day17 枚举、typedef、位运算、堆空间的学习

目录 枚举 typedef 位运算 堆上的空间 枚举 一个一个列举出来&#xff0c;是指将变量的值一一列举出来&#xff0c;变量的值只限于列举出来的值的范围内。 作用&#xff1a; 1、为了提高代码的可读性 2、提高代码的安全性 枚举类型 基本语法&#xff1a; enum 枚举名 { …

根据toml编译生成whl

1、安装build pip install build如果已经安装build, 那就执行一下升级命令 python3 -m pip install --upgrade build2、在pyproject.toml所在的文件夹那一层执行 # -w:生成whl文件 -v:显示python编译过程 python3 -m build -w -v2.1 当出现以下输出&#xff0c;需要耐心等待…

Java 集成测试详解及示例

通过综合指南探索 Java 集成测试的世界。了解工具、流程和最佳实践&#xff0c;并辅以实际示例。 随着软件系统变得越来越大、越来越复杂&#xff0c;组件和服务以错综复杂的方式交互&#xff0c;集成测试已变得不可或缺。通过验证所有组件和模块在组合时是否正常工作&#xff…

入门岛2-python实现wordcount并进行云端debug

书生大模型学习 任务&#xff1a; 1.实现一个wordcount函数&#xff0c;统计英文字符串中每个单词出现的次数。返回一个字典&#xff0c;key为单词&#xff0c;value为对应单词出现的次数。 2.Vscode连接InternStudio debug TIPS&#xff1a;记得先去掉标点符号,然后把每个单词…

Mybatis学习-day19

Mybatis学习-day19 1. resultMap resultMap 是 MyBatis 中最复杂的元素&#xff0c;主要用于解决实体类属性名与数据库表中字段名不一致的情况&#xff0c;可以将查询结果映射成实体对象。 <resultMap id"staffAndDep" type"com.easy.bean.Staff">…

解決android Studio在导入已有的工程 build 时出现的错误

最近在学习andriod方面的知识&#xff0c;第一次使用android Studio导入别人的项目&#xff0c;从导入到build出现了几个问题&#xff0c;在这里记录以下解决过程。 SDK location not found 如下图报错所示&#xff0c;看网上教程有的说是SDK未安装&#xff0c;这里我是明确自…