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兼容性的问题。

在 “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)改动点。

20240709-next-01.png

获取路由参数

// 从路由参数中获取用户信息
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 {
  // 视频ID
  videoId: number;
 Property 'videoId' has no initializer and is not definitely assigned in the constructor.

改为

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

参考资料

目录
相关文章
|
4月前
|
运维 监控 数据可视化
日志服务 HarmonyOS NEXT 日志采集最佳实践
鸿蒙操作系统(HarmonyOS)上的日志服务(SLS)SDK 提供了针对 IoT、移动端到服务端的全场景日志采集、处理和分析能力,旨在满足万物互联时代下应用的多元化设备接入、高效协同和安全可靠运行的需求。
117050 15
|
4月前
|
编解码 视频直播 开发工具
|
2月前
|
存储 开发框架 安全
鸿蒙 HarmonyOS NEXT星河版APP应用开发-阶段一
HarmonyOS NEXT星河版的应用开发标志着华为分布式操作系统的全新篇章,它聚焦于打造原生精致、易用、流畅、安全、智能和互联的极致体验。开发者可以利用其先进的API和工具集,如DevEco Studio,构建高性能、跨设备无缝协同的应用程序,从而充分利用HarmonyOS的分布式能力,为用户带来一致且丰富的多场景数字生活体验。随着“学习强国”、岚图汽车、中国电信等知名企业和应用的加入,鸿蒙生态正迅速扩展,引领着原生应用开发的新趋势。
68 3
鸿蒙 HarmonyOS NEXT星河版APP应用开发-阶段一
|
2月前
|
域名解析 网络协议 调度
阿里云移动研发平台EMAS支持纯血鸿蒙HarmonyOS NEXT
阿里云移动研发平台EMAS作为面向应用全生命周期提供一站式的应用研发管理服务产品,其核心产品包括云构建,HTTPDNS 和移动推送正式推出了针对纯血鸿蒙的SDK版本,将为广大开发者在鸿蒙生态中构建高效、稳定、可靠的企业级应用提供强有力的支持。如有疑问,请进入钉钉群(群号35248489)进行相关咨询。
|
3月前
|
搜索推荐 物联网 Linux
鸿蒙OS Next与安卓系统的比较
【6月更文挑战第2天】鸿蒙OS Next与安卓系统的比较
296 2
|
IDE JavaScript API
HarmonyOS开发第一步,熟知开发工具DevEco Studio
本文主要以常见的功能点作为概述希望可以帮助到学习HarmonyOS的开发者。
412 0
|
15天前
|
JavaScript 前端开发 小程序
基于js开发快速学习鸿蒙基础
【8月更文挑战第26天】
27 1
|
2月前
|
人工智能 搜索推荐 数据可视化
鸿蒙应用实践:利用扣子API开发起床文案生成器
本文将使用扣子(coze)智能体API开发一个起床文案生成器,用于自己的鸿蒙应用中生成”千人千面“的起床文案。
63 0
|
4月前
|
JavaScript API
鸿蒙开发接口UI界面:【@ohos.mediaquery (媒体查询)】
鸿蒙开发接口UI界面:【@ohos.mediaquery (媒体查询)】
49 1
HarmonyOS学习路之方舟开发框架—学习ArkTS语言(状态管理 四)
被@Observed装饰的类,可以被观察到属性的变化;子组件中@ObjectLink装饰器装饰的状态变量用于接收@Observed装饰的类的实例,和父组件中对应的状态变量建立双向数据绑定。这个实例可以是数组中的被@Observed装饰的项,或者是class object中是属性,这个属性同样也需要被@Observed装饰。单独使用@Observed是没有任何作用的,需要搭配@ObjectLink或者@Prop使用。
下一篇
DDNS