arkTs使用不爽,华为为何迟迟不改进?

华为

1个回答

写回答

13259447235

2026-02-16 06:00

+ 关注

华为
华为

作为开发者,使用arkTs时感觉有不少让人不爽之处。像全局的@Styles、@Extend装饰器不能跨文件使用,解释说全局是指同一个文件里的全局。可搞笑的是,在其他文件定义同名的全局@Styles装饰器函数还会报错,这不是自相矛盾嘛。拜托,我怎么可能把所有组件都写在一个文件里。这个问题都出现快一年了,华为论坛上好多人吐槽,可到现在还没改。华为的程序员在做什么?余承东又在做什么?难道都在研究如何吹嘘领先吗?兄弟们,再看看他组件调用方法,我不尬黑,给你们截个图。

调用时传的属性与链式调用的属性有些混乱。像maxLength、type是链式调用的,在我看来,它们和placeholder应属同一维度,放在一起更合适,但这也无关紧要,见仁见智。不过,由于这种链式调用的方式,再加上复杂组件存在嵌套关系,其可读性会变得极差,甚至比没写好的Flutter还要糟糕。而且这还没写任何业务,光是用来描述UI就已经有好多行了。肯定有人觉得,抽离封装自定义组件能缓解这种情况。但是,新问题又出现了,由于华为的bug,全局的@Extend、@Styles无法跨文件使用。然后,他这个组件结构体不支持继承。思考一下这种情况,就以TextInput组件为例。我打算依据它封装一个专属于自己项目的input。这个input的属性与原TextInput完全相同,唯有onChange方法存在差异。我得在原方法上做一个切面,如此一来,在执行用户传入的onChange方法的同时,还能够额外做些别的事情。在前端开发中,vue、react、flutter里实现这样一个需求都特别容易,多包一层转发属性或者继承组件都能轻松做到。在arkTs中,@Extend不支持跨文件,所以这种方案被直接否决了。而且组件不支持继承,也不能实现属性批量转发。要实现我的这个需求,就得在我的组件里把disabled、placeholder、type等一大堆我根本没改过的属性都定义一遍,然后手动转发给TextInput。只能说勉强能用,凑活一下也能用来写。但是很多在其他语言或技术里能轻松实现复用的东西。在他这儿由于设计低劣,你只能去复制粘贴。

举报有用(0分享收藏

Copyright © 2025 IZhiDa.com All Rights Reserved.

知答 版权所有 粤ICP备2023042255号