浅谈require 组件参数传递装饰器

hm688c720f36c59
发布于 2025-10-31 11:09
浏览
0收藏

🎯 浅谈require 组件参数传递装饰器

📌 见解

1️⃣ 仅用于装饰@Prop、@State、@Provide、@BuilderParam、@Param,以及普通变量(没有被装饰器装饰)

2️⃣ 可用于在开发态联想出组件参数传递是否必需

3️⃣ 在API 18+ @Require装饰@State、@Prop、@Provide装饰的状态变量,可以在无本地初始值的情况下直接在组件内使用,不会抛出异常❗❗❗

🧩 拆解

@Entry
@Component
struct RequireCase {
  @State name: string = '汉堡黄'

  @Builder
  buildTest() {
    Row() {
      Text('汉堡黄')
        .fontSize(30)
    }
  }

  build() {
    Column() {
      RequireCaseV1({
        generalValue: '汉堡黄',
        stateValue: '汉堡黄',
        provideValue: '汉堡黄',
        builderParamValue: this.buildTest,
        propValue: '汉堡黄'
      })
      RequireCaseV2({ message: this.name })
    }
  }
}

@Component
struct RequireCaseV1 {
  @Require generalValue: string = '汉堡黄'
  @Require @State stateValue: string = '汉堡黄'
  @Require @Provide provideValue: string = '汉堡黄'
  @Require @BuilderParam builderParamValue: () => void
  @Require @Prop propValue: string = '汉堡黄'

  @Builder
  buildFunction() {
    Column() {
      Text('initBuilderParam')
        .fontSize(30)
    }
  }

  build() {
    Column() {
      Text(this.generalValue)
        .fontSize(30)
      this.builderParamValue()
    }
  }
}

@ComponentV2
struct RequireCaseV2 {
  @Require @Param message: string

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

📝 添加参数校验能规避开发态/编译态出现的一些参数缺失的问题,让代码更加健壮

🌸🌼🌺


文章来源:​​https://developer.huawei.com/consumer/cn/blog/topic/03197235545165241​

分类
标签
收藏
回复
举报
回复
    相关推荐