为了账号安全,请及时绑定邮箱和手机立即绑定

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 {
  // 视频ID
  videoId: number;
 Property 'videoId' has no initializer and is not definitely assigned in the constructor.

改为

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

参考资料

点击查看更多内容
1人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
全栈工程师
手记
粉丝
1.7万
获赞与收藏
2171

关注作者,订阅最新文章

阅读免费教程

感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消