HarmonyOS 鸿蒙Next:ETS语法中{}()有点重复了

发布于 1周前 作者 phonegap100 来自 鸿蒙OS

HarmonyOS 鸿蒙Next:ETS语法中{}()有点重复了

cke_138.png

上面语法中()中是需要输入什么东西吗?如果不需要 为啥不直接

RelativeContainer(
text()
)

实在是感受不到()多敲这个括号的意义是什么,用户输入体验臃肿,希望可以改进不必要的小概率输入符号的无效输入 用不到就不要设计到语法结构中

RelativeContainer(){

    // 

}

7 回复

不冲突,因为带 { } 的是容器组件, ( )是给组件传参的,{ }中用来写UI组件,就是html中<div></div>的箭头一样,用来装其他组件,也有点像vue中的插槽, ( )中的传参可以在子组件中接收,在子组件中使用[@Prop](/user/Prop)接收,可以实现类似vue中父子组件传参效果

就是大量写(){}而且还有一个大概率()空的地方会大量存在 这种影响输入效率的 真的堪称拉胯设计

给组件设置默认值的时候用,比如系统的

TextArea({text:"我是TextArea我是TextArea我是TextArea我是TextArea"}).width(300)<button style="position: absolute; padding: 4px 8px 0px; cursor: pointer; top: 8px; right: 8px; font-size: 14px;">复制</button>

再比如自己自定义的组件


[@Entry](/user/Entry)
[@Component](/user/Component)
struct Page30 {
  build() {
    Column() {
      MyButton({title:'提交'})
    }
    .height('100%')
    .width('100%')
  }
}

//我是自定义组件Button @Component struct MyButton { @Prop title :string build() { Text(this.title) } }<button style="position: absolute; padding: 4px 8px 0px; cursor: pointer; top: 8px; right: 8px; font-size: 14px;">复制</button>

MyButton(title:‘提交’), {}() 这两个不重复吗,要么()要么{} 足够了,两个弄一起没必要 多加小众符号的输入降低码率

这和普通函数/方法的使用方式冲突了,对已经掌握JavaScript的人来说增加了学习成本
arkts是依托JavaScript的
普通的方法传值如果是原括号直接传值,那么按照位置写值 不需要写变量名 比如abc(“张三“,22)
如果想不考虑位置,那就要用花括号语法,
比如这样abc({age:22,title:张三})

要区分这种有太多办法解决了,比如前后端放在不同的{}中,通过this.调用函数,写ui就直接(),用户体验比现存的 大量({})好太多了,主要ide智能提示也不到位,如果OK这种设计模式可以解决很多弊端,那ide总需要解决大量{{}) 这种输入吧,太影响效率了。主要还是频繁用到。敲字母大家都会流畅,字母切换到符号绝对会停顿太多了,效率来讲上不去的。

在HarmonyOS的ETS(Extensible TypeScript)语法中,{}()的使用确实在某些场景下看起来相似,但它们承担着不同的职责。{}主要用于定义对象字面量或代码块,而()则用于函数调用、表达式分组等。这种设计是大多数编程语言中的通用约定,旨在提高代码的可读性和表达力。

如果感觉在某些具体情况下{}()的使用造成混淆,建议仔细审查官方文档或示例代码,以理解它们在特定上下文中的具体作用。同时,随着HarmonyOS和ETS的不断发展,也可能会有新的语法特性或最佳实践被引入。如果问题依旧没法解决请加我微信,我的微信是itying888。

回到顶部