HarmonyOS鸿蒙Next中如何编写只传一个参数的子组件

HarmonyOS鸿蒙Next中如何编写只传一个参数的子组件 我想要编写一个自定义组件,只需要传一个默认的String类型,使其调用方式直接编写

Child('111')

而不是

Child({
    str: '111'
})

就类似于Text组件或者Button组件那样,应该怎么编写?

2 回复

在HarmonyOS鸿蒙Next中,编写只传一个参数的子组件可以通过定义@Prop@State装饰器来实现。例如,使用@Prop装饰器来接收父组件传递的单个参数。代码示例如下:

@Component
struct ChildComponent {
  @Prop message: string;

  build() {
    Text(this.message)
  }
}

父组件调用时传递参数:

@Entry
@Component
struct ParentComponent {
  build() {
    Column() {
      ChildComponent({ message: 'Hello, HarmonyOS!' })
    }
  }
}

这样,子组件ChildComponent只接收一个message参数。

更多关于HarmonyOS鸿蒙Next中如何编写只传一个参数的子组件的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS Next中,可以通过自定义组件的构造函数实现直接传参的简洁调用方式。以下是实现方法:

  1. 使用@Component装饰器创建组件时,在struct中定义构造函数:
@Component
struct Child {
  private str: string

  constructor(str: string) {
    this.str = str
  }

  build() {
    Text(this.str)
  }
}
  1. 使用时就可以直接传入字符串参数:
Child('111')

这种实现方式利用了ArkTS的构造函数特性,与Text组件的实现原理类似。注意构造函数参数需要与组件内部属性对应,并在build方法中使用该属性。

相比传统props传参方式,这种写法更简洁,适用于只需要传递少量简单参数的场景。

回到顶部