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