获得徽章 8
# 鸿蒙的实践与探索# AppStorageV2/PersistenceV2 比起V1好用很多,v1中持久化状态会自动关联到全局状态,同步读写,这在一些场景下很好用,在一些场景下很傻,而且持久化的内容只能是基础类型,不能自动序列化、反序列化,2版本有了很大的改进,只是目前api比较简陋、啰嗦
# 鸿蒙的实践与探索# 鸿蒙组件的双向绑定写法充满了奇怪的割裂感,拿v1来说,自定义实现双向绑定很轻松,使用@State、@Link即可,但是在与系统组件进行双向绑定时则需要使用`$$`作为特殊标识,这是一处割裂。v1版本存在大量的设计问题,导致实际开发时极容易出现一个组价有多个数据源的问题。
更新v2之后,像系统组件进行双向绑定仍然使用`$$`,同时在v2实践单向数据流、单一可信数据源原则,这导致无法直接使用双向绑定,提供了`!!` 作为自定义组件双向绑定标识,同时子组件需要@Param @Event (实际是受控组件回调的语法糖)。
我非常不解为什么统一使用`$$`作为双向绑定的语法糖,而是自定义组件一套、系统组件一套,而且IDE还没有提供完善的语法支持(`$$`标识后的变量无法查找定义),真叫人摸不到头脑
# 鸿蒙的实践与探索# 前前后后研究了两周,总算在鸿蒙上成功调用了c++项目的native代码,一步一坑还找不到有效的参考示例
# 鸿蒙的实践与探索# 鸿蒙的PhotoViewPicker有一个非常抽象的问题,PhotoSelectOptions的preselectedUris 属性不可以使用组件内部的状态作为参数,这是无法理解且反直觉的一个问题,华为的工程师表示这不是问题,并给出了这样的解决方案
鸿蒙的v1装饰器挺抽象的,明明有react、compose这样的珠玉在前,完全可以照抄的“单向数据流、单一可信源”,结果非搞出了各种各样的花招,然后弄了个不兼容的v2版本再去走一遍标准答案
鸿蒙ndk文档真是太拉了....不全面、甚至有冲突的
下一页