您现在的位置是:首页 > 文章详情

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

日期:2024-08-12点击:221

在 "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](https://my.oschina.net/u/4127701) [@Component](https://my.oschina.net/u/3907912) export struct VideoPublishPage { [@Entry](https://my.oschina.net/u/4127701) [@Component](https://my.oschina.net/u/3907912) 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; 

参考资料

原文链接:https://my.oschina.net/waylau/blog/15278135
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章