• Lv0
    粉丝0

积分0 / 贡献0

提问1答案被采纳0文章0

作者动态

    xxx must have one and only one property decorated with @BuilderParam, and its @BuilderParam expects no parameter

    兴旺 显示全部楼层 发表于 3 天前
    【问题描述】
    fakename.png
    报错信息:In the trailing lambda case, 'UserInfo' must have one and only one property decorated with @BuilderParam, and its @BuilderParam expects no parameter

    1. /**
    2. * 14.学习自定义组件
    3. */
    4. import toast from '../utils/Utils'
    5. import { UserInfo } from './components/MyComponents'

    6. @Builder
    7. function Avatar() {
    8.   Row() {
    9.     Text("头像:")
    10.     Image($r("app.media.avatar"))
    11.       .fitOriginalSize(true)
    12.       .height(50)
    13.   }.backgroundColor(Color.Pink)
    14. }


    15. @Entry
    16. @Component
    17. struct Learn13CustomComponent {
    18.   build() {
    19.     Column({ space: 10 }) {
    20.       UserInfo({ name: "崔兴旺" }).backgroundColor(Color.Orange).width(300).height(150)
    21.       UserInfo({
    22.         name: "张三", say: (_name: string) => {
    23.           toast(`${_name}说:hello`)
    24.         },
    25.       }){
    26.         Avatar()
    27.       }

    28.       UserInfo({ name: "李四" })
    29.     }
    30.   }
    31. }

    复制代码
    子组件代码:
    1. import toast from "../../utils/Utils"

    2. /**
    3. * 这是插槽中默认的内容
    4. */
    5. @Builder
    6. function defaultContent() {
    7.   Text("我是默认内容")
    8. }


    9. @Component
    10. export struct UserInfo {
    11.   @State name: string = ""
    12.   @State age: number = 0
    13.   say = (_name: string) => {
    14.     toast(`${_name}说:你好`)
    15.   }

    16.   @Builder
    17.   defaultContent2() {
    18.     Text("我是默认内容2")
    19.   }

    20.   // @Require//父组件必选传给本子组件
    21.   @BuilderParam
    22.   Content: () => void = defaultContent
    23.   @BuilderParam
    24.   Content2: () => void = this.defaultContent2

    25.   build() {
    26.     Column() {
    27.       Text(this.name).fontSize(20).backgroundColor(Color.Red)
    28.       Text(this.age.toString()).fontSize(20).backgroundColor(Color.Blue)
    29.       this.Content()
    30.       this.Content2()
    31.     }.backgroundColor(Color.Green).width(190).height(140).onClick(() => {
    32.       this.say(this.name)
    33.     })
    34.   }
    35. }

    复制代码

    fakename.png

    【运行环境】
    fakename.png
    SDK版本:"compatibleSdkVersion": "5.0.0(12)"
    fakename.png

    您尚未登录,无法参与评论,登录后可以:
    参与开源共建问题交流
    认同或收藏高质量问答
    获取积分成为开源共建先驱

    精彩评论2

    fengyunrenwu

    沙发 发表于 昨天 16:28
    @BuilderParam定义了两个,但是闭包场景只能一个哈

    Copyright   ©2023  OpenHarmony开发者论坛  京ICP备2020036654号-3 |技术支持 Discuz!

    返回顶部