HarmonyOS 鸿蒙Next ListItem控件中不能使用多个组件吗?

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

HarmonyOS 鸿蒙Next ListItem控件中不能使用多个组件吗?

这样写报错,The ‘ListItem’ component can have only one child component. <ArkTSCheck>

List({ space:2, initialIndex: 0 }) {
ForEach(this.arr, (item: string) => {
ListItem() {
Text(’’ + item)
.width(‘100%’)
.height(50)
.fontColor(‘white’)
.fontSize(16)
.textAlign(TextAlign.Start)
.padding({left:20})
// 添加右箭头图标
Image($rawfile(‘arrowhead.png’)) // 右箭头图片资源
.width(10) // 设置箭头的宽度
.height(10) // 设置箭头的高度
.margin({top:‘20%’})
}
}, (item: string) => item)
}

7 回复
把Text、Image组件放到一个容器组件里,如Row、Column等
写法有点问题,可以看一下他的那个结构,或者看一下有一个listcode的demo
无限套娃呗,嵌套多简单,column row 随便用

ListItem下嵌套Column()或者Row()

[@Entry](/user/Entry)
[@Component](/user/Component)
struct Page04 {
  [@State](/user/State) arr:string[] = ['aa','bb','cc','dd','ee']
  build() {
    Column() {
      List({ space:2, initialIndex: 0 }) {
        ForEach(this.arr, (item: string) => {
          ListItem() {
            Column(){
              Text('' + item)
                .width('100%')
                .height(50)
                .fontColor('white')
                .fontSize(16)
                .textAlign(TextAlign.Start)
                .padding({left:20})
              // 添加右箭头图标
              Image($r('app.media.app_icon')) // 右箭头图片资源
                .width(10) // 设置箭头的宽度
                .height(10) // 设置箭头的高度
                .margin({top:'20%'})
            }
          }
        }, (item: string) => item)
      }
    }
    .backgroundColor(Color.Pink)
    .height('100%')
    .width('100%')
  }
} 

好的好的,非常感谢

listItem有且只有一个子组件,可以在子组件内写多个组件啊

HarmonyOS 鸿蒙Next ListItem控件中确实不能使用多个组件

在HarmonyOS的鸿蒙Next系统中,ListItem控件的设计原则是其内部只能包含一个子组件。如果尝试在ListItem中直接添加多个组件(如Text、Image等),编译器会报错,提示“ListItem component can have only one child component”。

为了解决这个问题,开发者可以使用容器组件(如Row、Column、Stack等)来包裹多个子组件,然后再将这个容器组件作为ListItem的唯一子组件。这样,就可以实现ListItem中显示多个组件的效果,同时遵守系统的设计规范。

例如,可以在ListItem中使用Row组件来水平排列Text和Image等子组件,从而达到所需的布局效果。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部