HarmonyOS 鸿蒙Next 状态管理V2组件的传参怎么修饰可以不设置默认值

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

HarmonyOS 鸿蒙Next 状态管理V2组件的传参怎么修饰可以不设置默认值

在ChildComponent组件中 model的接收是一定会传参数的,但是在写组件时一定让写默认值,导致很多地方都需要判空

@ObservedV2
class Person {
  age: number = 0
  name: string = '小红'

  constructor(age: number, name: string) {
    this.age = age;
    this.name = name;
  }
}

@Entry
@ComponentV2
struct Index {
  @Local showList: Array<Person> = [new Person(12, '张三'), new Person(28, '李四')]

  build() {
    Column() {
      ForEach(this.showList, (person: Person) => {
        ChildComponent({ person: person })
      })
    }
  }
}

@ComponentV2
struct ChildComponent {
  person: Person | null = null

  build() {
    Column() {
    }.width('100%').height(100)
  }
}

更多关于HarmonyOS 鸿蒙Next 状态管理V2组件的传参怎么修饰可以不设置默认值的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

4 回复

@ObservedV2

class Person {

age : number;

name : string;

constructor(age: number, name: string) {

this.age = age;

this.name = name;

}

}

@Entry

@ComponentV2

struct Index {

@Local showList : Array<Person> = [ new Person(12 , ‘张三’) , new Person(28 , ‘李四’) ]

build() {

Column(){

  ForEach(this.showList , (person : Person) => {

    ChildComponent({

      person : person

    })

  })

}

}

}

@ComponentV2

struct ChildComponent {

person ?: Person | null

build() {

Column(){

  Text(`${this.person?.name}`)

}
.width('100%')
.height(100)

}

}

更多关于HarmonyOS 鸿蒙Next 状态管理V2组件的传参怎么修饰可以不设置默认值的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


@Require @Param 

Preview可能有点问题,但是确实不用new 了

在HarmonyOS鸿蒙系统中,对于Next状态管理V2组件的传参,如果你希望参数不被设置默认值,可以通过以下几种方式进行处理:

  1. 明确类型声明:在定义状态或方法参数时,直接声明参数的类型,而不为其赋予初始值。这样,在传递参数时,就必须显式提供该参数的值,否则会导致编译错误。

  2. 使用可选类型(如果支持):在某些情况下,如果鸿蒙系统支持类似可选类型(如Swift中的Optional)的机制,你可以将参数声明为可选类型,并在使用时检查其是否存在。但注意,这种方式并不是“不设置默认值”,而是允许参数为nullundefined。不过,在严格意义上,它避免了为参数提供一个具体的默认值。

  3. 方法重载:如果可能,可以通过方法重载来提供不同参数列表的同名方法。这样,你可以定义一个不接受默认值参数的方法,以及一个或多个接受默认值参数的重载方法。

然而,在鸿蒙系统的实际开发中,具体的实现方式可能会受到系统API和框架设计的限制。因此,建议直接参考鸿蒙系统的官方文档或示例代码,以获取最准确和有效的实现方式。

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

回到顶部