【关键字】
this指向,.bind(this),TS到ArkTS的适配
随着HarmonyOS Previewer版本的发布,笔者也是立马鸟枪换炮,想试一试鸿蒙的新特性,新功能。结果刚把老的工程代码导入,工程就无法编译了,让我们来看看是哪里报了错:
bind方法居然不支持了。要知道在Api9的HarmonyOS开发过程中,我们如果需要用成员函数或者匿名函数给组件配置事件时,是需要用bind方法确保函数体内的this指向正确的组件。那么现在bind方法不支持了我们该如何确保呢?让我们来看一下官方文档:
根据官方文档中的表述,配置事件的方式现在有了以下的变化:
1.使用匿名函数配置事件,不支持用function声明的方式进行配置,现在只支持“()=>{......}”的方式进行声明配置。
2.使用匿名函数和使用成员函数配置,都不再需要用bind方法来绑定this了,现在会自动绑定所属的组件
看来官方是为了简化我们的代码,提高代码的可读性,优化了这部分的逻辑。
那么就有人要问,如果我确实需要动态改变函数内的this指向,应该如何实现呢?官方也给了我们解决的方案:
原始代码:
1.可以使用类的方法实现
2.将this作为参数传入
3.将属性作为参数传入
那么肯定也还有人会问,我们项目里用到的地方那么多,一个个改多麻烦。官方在兼容性方面也给了我们解答:
在API version 10之前,ArkTS(.ets文件)完全采用了标准TS的语法。从API version 10 Release起,ArkTS的语法规则基于上述设计考虑进行了明确定义,同时,SDK增加了在编译流程中对.ets文件的ArkTS语法检查,通过编译告警或编译失败提示开发者适配新的ArkTS语法。
根据工程的compatibleSdkVersion,具体策略如下:
- compatibleSdkVersion >= 10 为标准模式。在该模式下,对.ets文件,违反ArkTS语法规则的代码会导致工程编译失败,需要完全适配ArkTS语法后方可编译成功。
- compatibleSdkVersion < 10 为兼容模式。在该模式下,对.ets文件,以warning形式提示违反ArkTS语法规则的所有代码。尽管违反ArkTS语法规则的工程在兼容模式下仍可编译成功,但是需要完全适配ArkTS语法后方可在标准模式下编译成功。
这样相关的地方就只会告警而不会影响编译,不过为了代码的美观性和可读性,还是建议各位小伙伴适配哦。
标签:ArkTS,指向,编译,适配,语法,HarmonyOS,V2,bind,ArkUI From: https://www.cnblogs.com/mayism123/p/18052018